我有以下代码:
seq(0.2, 0.4, by = 0.1) == c(0.2, 0.3, 0.4)
产生:
[1] TRUE FALSE TRUE
有人可以解释一下这个结果吗?
答案 0 :(得分:1)
这是数字错误:
> seq(0.2, 0.4, by = 0.1)-c(0.2, 0.3, 0.4)
[1] 0.000000e+00 5.551115e-17 0.000000e+00
请参阅?identical
或?all.equal
并进行比较:
> identical(seq(0.2, 0.4, by = 0.1),c(0.2, 0.3, 0.4))
[1] FALSE
> all.equal(seq(0.2, 0.4, by = 0.1),c(0.2, 0.3, 0.4))
[1] TRUE
同样比较:
> seq(2L,4L,by=1L)/10==c(.2,.3,.4)
[1] TRUE TRUE TRUE