num2str, accuracy, precision, rounding error

30 ビュー (過去 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!

カテゴリ

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!

Translated by