2

在我的代码中,我需要检查向量的两个连续成员之间的差异对是否相等/不相等,然后相应地做一些事情。现在这是 Matlab 中发生的一件奇怪的事情,如果我有两对两个连续的数字,那么当我使用

(x(i+3) - x(i+2)) ~= (x(i+1)-x(i)) 

1即使双方平等,它也给了我一个。我认为原因是存在一些舍入错误,但不太确定。例如,

x = [0,0.16,0.32,0.48,0.64,0.80];
>>a = x(5) - x(4)

a =

 0.1600

>>b = x(4) - x(3)

b =

 0.1600

>>a-b

ans =

5.5511e-17

知道如何摆脱这个问题吗?对于这种问题,是否有任何不同的策略可以绕过~=或运营商?==

提前谢谢各位。

4

1 回答 1

5

您不应该以这种方式比较浮点数的相等性。abs(a-b)<eps如果您正在测试相等性,则使用更可靠的方法。

于 2012-09-01T03:42:41.620 回答