-2

可能重复:
为什么这些数字不相等?

谁能向我解释一下,为什么 RFALSE在以下情况下会回答?

(1-0.9)>=0.1

我怎样才能得到TRUE这种比较?

4

3 回答 3

5

这是经典的R FAQ 7.31。你需要all.equal

于 2012-11-11T11:17:51.803 回答
5

这与浮点精度有关。本质上存在无限数量的浮点,在计算机中表示它们只能离散地完成,因此精度有限。要考虑这种有限的精度,请使用all.equal进行比较。正如@RomainFrcois 所说,这是 R 中非常常见的问题。

于 2012-11-11T11:22:46.490 回答
3

您可以创建自己的二元运算符来完成您的工作并将它们存储在您的 .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
于 2012-11-11T14:01:17.957 回答