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

6 Ansichten (letzte 30 Tage)

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

Akzeptierte Antwort

Torsten
Torsten am 26 Nov. 2024
Bearbeitet: Torsten am 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 Kommentare
Walter Roberson
Walter Roberson am 26 Nov. 2024
Bearbeitet: Walter Roberson am 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 am 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by