Problems of convert decimal number to a string

조회 수: 28 (최근 30일)
zongxian
zongxian 2020년 6월 28일
댓글: Walter Roberson 2021년 10월 8일
Now I want to convert a input decimal number (maybe a input number, not known) to a string, I try to use num2str and string function, but there are some problems that I can not solve.
num = [110.00001, 10.00000000000000001,99.01]';
% I want to num become ["110.00001", "10.00000000000000001","99.01"]
num2str([110.00001, 10.00000000000000001,99.01])
By use num2str it will delete some decimal places, I don't know how to do it, holp someone would help me.

답변 (3개)

madhan ravi
madhan ravi 2020년 6월 28일
You cannot do that.

Ajay Kumar
Ajay Kumar 2020년 6월 28일
You can define precision property in num2str. For example:
num = [110.00001, 10.00000000000000001,99.01]';
your_ans = num2str(num,10);
  댓글 수: 6
zongxian
zongxian 2020년 6월 28일
편집: zongxian 2020년 6월 28일
I have an idea, if we set the decimal number as num2str(10.0000000001, '%10.20f'), and then delete the zeros one by one (from the last one digits), until the non-zeros digit, now I have try it, it show '10.00000000010000000827', why the last digits are not zeros??
Walter Roberson
Walter Roberson 2020년 6월 28일
The exact value stored for 10.0000000001 is
10.0000000001000000082740370999090373516082763671875
Values down to 10.000000000000001 can be distinguished from 10.0
10.0000000000000017763568394002504646778106689453125
It is important to remember for this purpose that double() does not use decimal representation: it uses IEEE 754 Double Precision Binary representation, which is a 64 bit representation with 1 sign bit, 11 exponent bits, and 52 explicit fraction bits, plus one "hidden" fraction bit (it is hidden in the exponent in a way.)

댓글을 달려면 로그인하십시오.


KSSV
KSSV 2020년 6월 28일
편집: KSSV 2020년 6월 28일
iwant = sprintf("0.12f 0.12f 0.12f",num) ;
Try with sprintf.
You can split each number into a cell using num2cell, and use cellfun with sprintf. Or run a loop for each num.
  댓글 수: 1
zongxian
zongxian 2020년 6월 28일
This way need give the format of the number, but if we don't know the detail decimal number (i.e. '0.12f') will return wrong answer.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by