为什么 R 中的 %in% 有这种奇怪的行为?

问题描述 投票:0回答:1

创建以下代码时,

seq1 <- seq(-1,0,0.1)
(-0.1) %in% seq1

我不明白为什么这个结果的输出是FALSE,当

-0.1 %in% c(-0.2, -0.1)

返回TRUE

的输出

你知道为什么会有这种行为吗?

r
1个回答
0
投票

这是由于浮点近似造成的。 任何使用浮点硬件的计算机语言都会以这种方式运行。 使用大量有效数字打印出这些值,以查看这些值是什么。 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
© www.soinside.com 2019 - 2024. All rights reserved.