这是浮点错误还是其他完全错误?

时间:2019-03-25 21:45:00

标签: r floating-point

给出以下R代码:

i = 1.0
while(i > 0.03)
    i=i-0.05
    print(i)

输出如下:

[1] 0.95
[1] 0.9
...
..
.
[1] 0.1
[1] 0.05
[1] -3.191891e-16

谁能解释为什么循环中的终止减法不等于0?起初,我认为这是一个浮点错误,但我认为不是。

例如,如果我将值从1.0更改为5.0

i = 5.0
while(i > 0.03)
    i=i-0.05
    print(i)

最后一个值的输出是:

[1] 9.395262e-15

我知道这足够接近0,但是为什么会这样呢?

我尝试在不同的机器和操作系统上执行此代码,并且已经在C和Python中测试了这种情况(但是对于R来说似乎是唯一的)。

0 个答案:

没有答案