Matlab没有做正确的计算

时间:2015-02-10 15:07:14

标签: matlab

我有一个matlab的问题,我几乎可以肯定我已经在某个地方看到它并且绕过它,但现在我想解决它...当我做一个简单的计算时:

>> 14336*0.005

你会得到预期的答案:

ans = 71.6800

但使用格式长时:

format long; ans = 71.680000000000007

对于matlab来说似乎不是问题:

ans==71.68 = 1

但如果再做一次计算:

ans/0.005 = 1.433600000000000e+04
ans==14336 = 0
ans-14336 = 1.818989403545856e-12

有没有人知道解决方案来摆脱原始值和最终值的1.81e-12的差异?我想这是由于数据类型和东西,但有解决方案吗?

//卢卡斯

1 个答案:

答案 0 :(得分:0)

是的,解决方案是不对浮点精度数进行相等性测试。相反,将差异的绝对值与小阈值(例如eps)进行比较。请参阅MATLAB FAQ