我需要解决此问题的方法。解释为什么这只发生在一个数字上也是非常有帮助的,因为我希望将来避免这种情况。我已设置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混合模式