Cannot subtract number of order smaller then e-4 from variable

6 visualizaciones (últimos 30 días)

a=0.1; a=a-1e-5 gives result a=0.1000

Respuesta aceptada

Torsten
Torsten el 26 de Nov. de 2024
Editada: Torsten el 26 de Nov. de 2024
It's just a question of how the numbers are displayed.
Internally, the precision of computing is much higher.
format long % Use display format long
a = 0.1;
a = a - 1e-5
a =
0.099990000000000
format short
a
a = 0.1000
  3 comentarios
Walter Roberson
Walter Roberson el 26 de Nov. de 2024
Editada: Walter Roberson el 26 de Nov. de 2024
format long % Use display format long
a = 0.1;
fprintf('%.999g\n', a)
0.1000000000000000055511151231257827021181583404541015625
a = a - 1e-5
a =
0.099990000000000
fprintf('%.999g\n', a)
0.09999000000000000942801392511682934127748012542724609375
Dominik Stolfa
Dominik Stolfa el 26 de Nov. de 2024
Thank you for nice example. I was confused before whether the Matlab changes the values at all because even after subtracting 6e-5 or so, the values were still same. I didn’t go past up to 9e-5 because I was like “what are the chances”. :D

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by