我看过Why are these numbers not equal?并且有帮助,但这里没有解决这个问题。我不是在问为什么两个数字不同,我问为什么0.01
到0.99
范围内的每个数字都没有区别,除了 {{1} }。链接线程中接受的解决方案(下面)仍然没有区分有问题的两个值(它说它们相同),所以即使这是我的问题,它也是没有解释为什么价值实际上是不同的,也没有解决这里的问题。
处理接受数值作为参数的函数。此数值的有效范围是0.10
到0.01
。出于某种原因,0.99
在有效范围(0.10
)中作为而不是返回,即使它是?
FALSE
这很好用,val.range = seq(from = 0.01, to = 0.99, by = 0.01)
中的值都是data.frame
:
TRUE
但是,这会返回x = data.frame()
for (i in seq(0.01, 0.99, by = 0.01)){
x = rbind(x, i %in% val.range)
}
- 即使FALSE
显然位于0.10
:
val.range
这似乎只是0.10 %in% val.range
的问题 - 尝试范围内的其他值似乎工作正常并返回0.10
。有什么想法在这里发生什么?
修改:
阅读Why are these numbers not equal?后,我尝试了以下可接受的解决方案:
TRUE
评估为isTRUE(all.equal(0.10, val.range[10]))
。但如果TRUE
等于0.10
中的0.10
,,那么上面的结果应该是 val.range[10]
< em>,但他们不是。
解决方案:
由于链接的线程没有回答这个问题,@ rawr非常友好地在评论中提供代码来解决差异:
TRUE
我应用的解决方案舍入了format(c(0.10, val.range[10]), digits = 22)
中的值和数值:
val.range
然后评估为val.range = round(seq(from = 0.01, to = 0.99, by = 0.01), digits = 2)
temp = round(0.10, digits = 2)
temp %in% val.range
。
迈克尔