如何解决这个恼人的Matlab舍入错误

时间:2016-03-03 21:50:19

标签: matlab rounding-error

我需要解决此问题的方法。解释为什么这只发生在一个数字上也是非常有帮助的,因为我希望将来避免这种情况。我已设置format long选项以显示正在发生的事情。

我首先创建一个向量。就像这样:

>> vec = [0, 2.4, 2.8, 5.2, 5.6]

按预期返回:

vec = 
0   2.400000000000000   2.800000000000000   5.200000000000000   5.600000000000000

现在,我想在所有这些中添加0.4:

>> vec + 0.4

但是,这是我的输出:

ans =
0.400000000000000   2.800000000000000   3.200000000000000   5.600000000000001   6.000000000000000

注意5.6上的舍入误差。它不应该有1.我尝试使用vec + round(0.4,1),但这也行不通。

为什么这只发生在5.6?我怎么能避免这个?如果不可避免,我该如何解决呢?

编辑:此外,如果这很有用。

MATLAB版本:8.6.0.267246(R2015b) 操作系统:Microsoft Windows 7企业版6.1(Build 7601:Service Pack 1) Java版本:Java 1.7.0_60-b19与Oracle Corporation Java HotSpot(TM)64位服务器VM混合模式

0 个答案:

没有答案