不可理解的模计算
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)
我在这里的模查询得到了一个奇怪的结果。也许有人有解决方案:
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)