Problems of convert decimal number to a string

60 views (last 30 days)
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.

Answers (3)

madhan ravi
madhan ravi on 28 Jun 2020
You cannot do that.

Ajay Kumar
Ajay Kumar on 28 Jun 2020
You can define precision property in num2str. For example:
num = [110.00001, 10.00000000000000001,99.01]';
your_ans = num2str(num,10);
Walter Roberson
Walter Roberson on 28 Jun 2020
The exact value stored for 10.0000000001 is
Values down to 10.000000000000001 can be distinguished from 10.0
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.)

Sign in to comment.

KSSV on 28 Jun 2020
Edited: KSSV on 28 Jun 2020
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 Comment
zongxian on 28 Jun 2020
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.

Sign in to comment.


Community Treasure Hunt

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

Start Hunting!