num2str, accuracy, precision, rounding error

50 ビュー (過去 30 日間)
Lu Maz
Lu Maz 2017 年 1 月 12 日
回答済み: Jyotish Robin 2017 年 1 月 17 日
Please have a look at this code ...
b = 1.00000001;
a = num2str(b,'%.100f')
a = 1.0000000099999999000000000000000000000000000000000000000000000000000000000000000000000000000000000000
a = num2str(b,'%.10f')
a = 1.0000000100
Why is the result different?
How to obtain the right result in the first case?

回答 (1 件)

Jyotish Robin
Jyotish Robin 2017 年 1 月 17 日
Hi Lu,
By default, MATLAB stores all numeric values as double-precision floating point. The fact is, almost all decimal numbers are NOT representable exactly in floating point arithmetic as a double. This is why this issue is completely about precision and the binary form that a double comprises.
If you are interested in converting a double or single input to the exact decimal string, you could refer the following file exchange submission: https://www.mathworks.com/matlabcentral/fileexchange/22239-num2strexact--exact-version-of-num2str-
Hope the above suggestions help!

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by