我的一位朋友在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 :(得分:8)
问题是0.01无法在二进制浮点中精确表示。两者都不能0.07。
答案 1 :(得分:7)
看起来像浮点精度“问题”:http://www.lahey.com/float.htm
答案 2 :(得分:0)
尝试
x = ((0.07+1)*100) - 100
- )