创建以下代码时,
seq1 <- seq(-1,0,0.1)
(-0.1) %in% seq1
我不明白为什么这个结果的输出是FALSE,当
-0.1 %in% c(-0.2, -0.1)
返回TRUE
的输出你知道为什么会有这种行为吗?
这是由于浮点近似造成的。 任何使用浮点硬件的计算机语言都会以这种方式运行。 使用大量有效数字打印出这些值,以查看这些值是什么。 R FAQ
有更多信息seq1 <- seq(-1,0,0.1)
print(seq1, digits = 20)
## [1] -1.000000000000000000000 -0.900000000000000022204 -0.800000000000000044409 -0.699999999999999955591 -0.599999999999999977796 -0.500000000000000000000
## [7] -0.399999999999999911182 -0.299999999999999933387 -0.199999999999999955591 -0.099999999999999977796 0.000000000000000000000
print(-0.1, digits = 20)
## [1] -0.10000000000000000555