How can we convert a number into a string value with the exact number of digits present in the number?
51 views (last 30 days)
Show older comments
Edited: Muhammad Ahsan Khan on 20 May 2022
When I perform the following operation, it cuts off the last digit.
I want it to be exactly '0.0199155', and not even '0.019915500000000'.
Please can someone help me in this case, as I have a lot of folders with different numbers and precision and later I want to read each folder name, so I need the strings to match exactly the numbers. Thank You!
Stephen23 on 20 May 2022
Edited: Stephen23 on 20 May 2022
More Answers (2)
You converted it correctly and you store the whole number in the workspace. However, you need to change the display format to see the whole number in the Command Window. Try this one
x = '9.876543218';
Similar story though.
Try this one:
number = 0.0199155;
Walter Roberson on 20 May 2022
The digits "actually present" in the number assigned are 0.0199154999999999991755483819133587530814111232757568359375
The number you are thinking of 0.0199155 cannot be exactly represented in any finite binary floating point number. It is a mathematical impossibility, for the same reason that you cannot represent exactly 1/3 in any finite decimal expansion. 0.333...333 * 3 = 0.999...999 not 1 exactly no matter how many digits you use, and for the same mathematical reason 1/10 cannot be exactly represented as a finite binary fraction.
If you need exactly 199155/10000000 represented then you will need to to switch to something like the Symbolic Toolbox.
Or you could make the string form the fundamental form and str2double when you need the numeric approximation.
Find more on Data Type Conversion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!