Numerical issue in simple summation/addition

1 次查看(过去 30 天)
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

采纳的回答

Star Strider
Star Strider 2016-1-23

更多回答(2 个)

Image Analyst
Image Analyst 2016-1-23
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 2016-1-23
编辑:Ali 2016-1-23
So, what is the fix? how can i have such a while loop with 0.1 increments and stop before 1?
  4 个评论
Image Analyst
Image Analyst 2016-1-23
"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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by