For loop R统计包中for或while循环中的罕见精度减法

For loop R统计包中for或while循环中的罕见精度减法,for-loop,precision,subtraction,For Loop,Precision,Subtraction,我在“while”或“for”循环中做一个简单的减法。。。问题是,我希望有一个常规的阶跃变化,例如,每个0.01。。。但经过一些计算后,R的精度突然改变,从“e-02”变为“e-17”(!!!!)数字: 代码 …所以在卢瓦尔克的位置11是:1.0408e-17!!!!!。运算结果仅为0.01-0.01,我预期结果为0。我有选项(数字=5),小于R中的默认值(相同的结果适用于默认数字) 我真的想知道为什么会这样。。。因为你可以想象,这是一个完全出乎意料的结果。。。如果我使用在某些值之间起作用的“w

我在“while”或“for”循环中做一个简单的减法。。。问题是,我希望有一个常规的阶跃变化,例如,每个0.01。。。但经过一些计算后,R的精度突然改变,从“e-02”变为“e-17”(!!!!)数字:

代码 …所以在卢瓦尔克的位置11是:1.0408e-17!!!!!。运算结果仅为0.01-0.01,我预期结果为0。我有选项(数字=5),小于R中的默认值(相同的结果适用于默认数字) 我真的想知道为什么会这样。。。因为你可以想象,这是一个完全出乎意料的结果。。。如果我使用在某些值之间起作用的“while”,同样适用于。。。 问题是,如果我需要使用我期望为0的稀有值,在“if”语句中作为条件,显然value==0永远不会成立,仅举一个简单的例子。。。 对我来说非常重要的是要知道为什么R会做出这样的默认行为。。。 非常感谢您的关注

move <- 0.01
p <- 0.1
rwalk <- p
count <- 2
for(i in 1:30){
    p <- p - move
    rwalk[count] <- p
    count <- count + 1
    }
p
rwalk
> p
[1] -0.2
> rwalk
[1]  1.0000e-01  9.0000e-02  8.0000e-02  7.0000e-02  6.0000e-02  5.0000e-02
 [7]  4.0000e-02  3.0000e-02  2.0000e-02  1.0000e-02  1.0408e-17 -1.0000e-02
[13] -2.0000e-02 -3.0000e-02 -4.0000e-02 -5.0000e-02 -6.0000e-02 -7.0000e-02
[19] -8.0000e-02 -9.0000e-02 -1.0000e-01 -1.1000e-01 -1.2000e-01 -1.3000e-01
[25] -1.4000e-01 -1.5000e-01 -1.6000e-01 -1.7000e-01 -1.8000e-01 -1.9000e-01
[31] -2.0000e-01