num2str, accuracy, precision, rounding error

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?

Respuestas (1)

Jyotish Robin
Jyotish Robin el 17 de En. de 2017

2 votos

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!

Categorías

Productos

Etiquetas

Preguntada:

el 12 de En. de 2017

Respondida:

el 17 de En. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by