Numerical issue in simple summation/addition

1 visualizzazione (ultimi 30 giorni)
below code prints 1. But if you have b = 0.2 at the second line, it does not print 1.
a = 0;
b = 0.1;
c = a;
while c < 1
c
c = c+b;
end

Risposta accettata

Star Strider
Star Strider il 23 Gen 2016

Più risposte (2)

Image Analyst
Image Analyst il 23 Gen 2016
It has nothing to do with the version. It has everything to do with digitization/quantization differences as discussed in the FAQ: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F

Ali
Ali il 23 Gen 2016
Modificato: Ali il 23 Gen 2016
So, what is the fix? how can i have such a while loop with 0.1 increments and stop before 1?
  4 Commenti
Image Analyst
Image Analyst il 23 Gen 2016
"What's the fix?" Did you read the FAQ like both Star and I pointed you to? In there is the "fix" or way to deal with the reality of it -- you check against a tolerance.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by