【问题标题】:Unexpected behaviour of greater and less than [duplicate]大于和小于的意外行为[重复]
【发布时间】:2012-10-31 02:28:13
【问题描述】:

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

谁能给我解释一下,为什么 R 在以下情况下回答 FALSE

(1-0.9)>=0.1

我如何获得TRUE 进行此类比较?

【问题讨论】:

标签: r comparison


【解决方案1】:

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

【讨论】:

  • +1,但是我在回答中添加了一些细节以使这个问题有些自成一体。
  • 7.31 确定吗?浮点数和非一错误相结合!
  • 谢谢。我进行了编辑以减少自己的傻瓜
【解决方案2】:

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

【讨论】:

    【解决方案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
    

    【讨论】:

    • +1,进行这种比较的巧妙技巧。也许~= 会是一个更好的名字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2022-06-16
    • 2017-08-30
    • 1970-01-01
    • 2021-06-18
    • 2021-12-22
    • 2020-03-09
    相关资源
    最近更新 更多