在我的代码中,我需要检查向量的两个连续成员之间的差异对是否相等,然后相应地做一些事情。 现在这里有一个奇怪的事情发生在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
知道如何摆脱这个问题吗?是否有任何不同的策略绕过~=
或==
运算符来解决这些问题?
先谢谢你们。
答案 0 :(得分:5)
您不应该以相同的方式比较浮点数。如果您正在测试相等性,则更可靠的方法是使用abs(a-b)<eps
。