在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