我正在尝试比较while
循环中的整数,如下所示:
Sigma_Wanted_Start = 0.000;
Sigma_Wanted_End = 0.009;
Sigma_Increment = 0.001;
Sigma_Current = 0.000;
while (Sigma_Wanted_End ~= Sigma_Current)
Sigma_Current = Sigma_Current + Sigma_Increment;
end
如果Sigma_Wanted_End == 0.009
,那么我们将停止for循环。问题是,即使true
,该语句也显示为Sigma_Wanted_End == Sigma_Current
。
另一个奇怪的事情是,如果Sigma_Wanted_End == 0.008
,则while循环将停止。
我认为这是整数和double
之间的区别,所以我在所有数字上使用double
,但问题仍然存在。
有人知道为什么吗?
提前致谢
答案 0 :(得分:2)
由于可用的有限精度,在比较浮点值时不应测试精确的相等性。而是做这样的事情:
while (Sigma_Current < Sigma_Wanted_End)
Sigma_Current = Sigma_Current + Sigma_Increment;
end
答案 1 :(得分:1)
如果我们有
x = 0.3
0.4-0.1
x==y
这会给你假 所以你可以这样做
Sigma_Wanted_Start = 0.000;
Sigma_Wanted_End = 0.009;
Sigma_Increment = 0.001;
Sigma_Current = 0.000;
while (~((Sigma_Wanted_End - Sigma_Current)<0.0))
Sigma_Current = Sigma_Current + Sigma_Increment;
end