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

38 views (last 30 days)

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

Accepted Answer

Torsten
Torsten on 26 Nov 2024 at 19:20
Edited: Torsten on 26 Nov 2024 at 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 Comments
Walter Roberson
Walter Roberson on 26 Nov 2024 at 20:18
Edited: Walter Roberson on 26 Nov 2024 at 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 on 26 Nov 2024 at 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

Sign in to comment.

More Answers (0)

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!