R seq为特定序列提供非常小的非零输出

时间:2018-02-12 15:29:27

标签: r seq

在R中的特定实例中运行seq时,输出不正确,以非常小的精度丢失0。

具体做法是:

预期输出:

seq(from = -0.6, to = 0.7, by = 0.1)
[1] -0.6 -0.5 -0.4 -0.3 -0.2 -0.1  0.0  0.1  0.2  0.3  0.4  0.5  0.6  0.7

R输出:

seq(from = -0.6, to = 0.7, by = 0.1)
[1] -6.000000e-01 -5.000000e-01 -4.000000e-01 -3.000000e-01 -2.000000e-01
[6] -1.000000e-01  1.110223e-16  1.000000e-01  2.000000e-01  3.000000e-01
[11]  4.000000e-01  5.000000e-01  6.000000e-01  7.000000e-01

这也似乎也发生在seq(-0.7,0.7,0.1)中,并且我认为这种行为也发生在一组未知的数字上。

有谁知道为什么会这样?

P.S。这个问题有一个解决方案,如下所示:

seq(from = -0.6, to = 0.7, length.out = 14)
[1] -0.6 -0.5 -0.4 -0.3 -0.2 -0.1  0.0  0.1  0.2  0.3  0.4  0.5  0.6  0.7

或更一般地说:

seq(from = -0.6, to = 0.7, length.out = ((to + by) - from) / by)
[1] -0.6 -0.5 -0.4 -0.3 -0.2 -0.1  0.0  0.1  0.2  0.3  0.4  0.5  0.6  0.7

0 个答案:

没有答案