3

我的一个朋友在 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 自相矛盾!

4

3 回答 3

8

问题是 0.01 不能用二进制浮点数精确表示。0.07 也不行。

于 2012-05-22T23:08:05.233 回答
7

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

于 2012-05-22T22:34:09.613 回答
0

尝试

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

;-)

于 2017-07-17T13:41:08.223 回答