我的一个朋友在 Matlab 中写了以下内容,输出有点奇怪:
for p=0.01:0.01:0.1
100*p
end
以下是输出:
1
2
3
4
5
6.000000000000001
6.999999999999999
8
9
10
我想知道为什么会有轻微的错误?这是否意味着,一般情况下的准确性也和这种情况一样差?
编辑:
我们比较了数字——7==6.999999999999999
结果是0
。所以,Matlab 自相矛盾!
我的一个朋友在 Matlab 中写了以下内容,输出有点奇怪:
for p=0.01:0.01:0.1
100*p
end
以下是输出:
1
2
3
4
5
6.000000000000001
6.999999999999999
8
9
10
我想知道为什么会有轻微的错误?这是否意味着,一般情况下的准确性也和这种情况一样差?
编辑:
我们比较了数字——7==6.999999999999999
结果是0
。所以,Matlab 自相矛盾!
问题是 0.01 不能用二进制浮点数精确表示。0.07 也不行。
看起来像一个浮点精度“问题”:http ://www.lahey.com/float.htm
尝试
x = ((0.07+1)*100) - 100
;-)