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

kan*_*kan 3 matlab

我的一个朋友在Matlab中写了以下内容,输出很奇怪:

for p=0.01:0.01:0.1
100*p 
end
Run Code Online (Sandbox Code Playgroud)

以下是输出:

1
2
3
4 
5
6.000000000000001
6.999999999999999
8
9
10
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会出现轻微错误?这是否意味着,一般情况下的准确性也与此情况一样差?

编辑:

我们比较了这些数字 - 7==6.999999999999999而且产出是0.所以,Matlab自相矛盾!

Oli*_*rth 8

问题是0.01不能用二进制浮点精确表示.0.07都不能.


Nic*_*eys 7

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