可能重复:
为什么这些数字不相等?
谁能向我解释一下,为什么 RFALSE
在以下情况下会回答?
(1-0.9)>=0.1
我怎样才能得到TRUE
这种比较?
这是经典的R FAQ 7.31。你需要all.equal
这与浮点精度有关。本质上存在无限数量的浮点,在计算机中表示它们只能离散地完成,因此精度有限。要考虑这种有限的精度,请使用all.equal
进行比较。正如@RomainFrcois 所说,这是 R 中非常常见的问题。
您可以创建自己的二元运算符来完成您的工作并将它们存储在您的 .Rprofile 中:
`%>=%` <- function(x, y) all.equal(x, y) | x > y
`%<=%` <- function(x, y) all.equal(x, y) | x < y
c(1-.9)>=.1
c(1-.9)%>=% .1