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

38 visualizzazioni (ultimi 30 giorni)

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

Risposta accettata

Torsten
Torsten il 26 Nov 2024 alle 19:20
Modificato: Torsten il 26 Nov 2024 alle 19:21
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 Commenti
Walter Roberson
Walter Roberson il 26 Nov 2024 alle 20:18
Modificato: Walter Roberson il 26 Nov 2024 alle 20:26
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 il 26 Nov 2024 alle 21:08
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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Get Started with MATLAB in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by