意外的行为大于和小于

时间:2012-11-11 11:14:54

标签: r comparison

  

可能重复:
  Why are these numbers not equal?

有人可以向我解释,在下列情况下,为什么R回答FALSE

(1-0.9)>=0.1

如何才能获得TRUE进行比较?

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:5)

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

答案 2 :(得分: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