为什么100 * 0.07等于6.9999 ......?

时间:2012-05-22 22:30:27

标签: 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自相矛盾!

3 个答案:

答案 0 :(得分:8)

问题是0.01无法在二进制浮点中精确表示。两者都不能0.07。

答案 1 :(得分:7)

看起来像浮点精度“问题”:http://www.lahey.com/float.htm

答案 2 :(得分:0)

尝试

x = ((0.07+1)*100) - 100

- )