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

6 vues (au cours des 30 derniers jours)
Dominik Stolfa
Dominik Stolfa le 26 Nov 2024
Commenté : Dominik Stolfa le 26 Nov 2024

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

Réponse acceptée

Torsten
Torsten le 26 Nov 2024
Modifié(e) : Torsten le 26 Nov 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 commentaires
Walter Roberson
Walter Roberson le 26 Nov 2024
Modifié(e) : Walter Roberson le 26 Nov 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 le 26 Nov 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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by