Numerical issue in simple summation/addition

1 visualización (últimos 30 días)
Ali
Ali el 23 de En. de 2016
Comentada: Image Analyst el 23 de En. de 2016
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

Respuesta aceptada

Star Strider
Star Strider el 23 de En. de 2016

Más respuestas (2)

Image Analyst
Image Analyst el 23 de En. de 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 el 23 de En. de 2016
Editada: Ali el 23 de En. de 2016
So, what is the fix? how can i have such a while loop with 0.1 increments and stop before 1?
  4 comentarios
Star Strider
Star Strider el 23 de En. de 2016
My pleasure.
Image Analyst
Image Analyst el 23 de En. de 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.

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by