不可理解的模计算

non-comprehensible modulo calculation

我在这里的模查询得到了一个奇怪的结果。也许有人有解决方案:

d  <- seq(0.0,1.0,0.1)
lab.y <- ifelse(((d*10) %% 2.0 == 0.0),d, NA)

将给出结果:

 [1] 0.0  NA 0.2  NA 0.4  NA  NA  NA 0.8  NA 1.0

所以 0.6 不见了。

我尝试添加如下查询:

ifelse((d*10/2 == 3.0), d, NA)

这就是全部 FALSE 即使

d*10/2
[1] 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

... 我真的不明白这里发生了什么。

非常感谢!

这是由于浮点错误,您应该寻找低绝对差异而不是精确匹配。它不是 0.6,而是(仅作为示例)0.6000000003 或 0.5999999997。尝试类似的东西:

ifelse((abs((d*10) %% 2)<0.000001), d, NA)