Matlab - 整数比较错误

时间:2014-01-10 11:31:53

标签: matlab

我正在尝试比较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,但问题仍然存在。

有人知道为什么吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

由于可用的有限精度,在比较浮点值时不应测试精确的相等性。而是做这样的事情:

while (Sigma_Current < Sigma_Wanted_End)
    Sigma_Current = Sigma_Current + Sigma_Increment;
end

答案 1 :(得分:1)

由于舍入问题,matlab中的浮点表示不相等。

如果我们有

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