R地狱的第一圈.0.1!= 0.3/3

ily*_*lya 5 r inequalities

可能重复:
R中的数字比较难度

大家好,

根据"R Inferno"论文.我现在正处于R地狱的第一圈.这是异教徒期望0.1 == 0.3/3的地方.Paper建议all.equal在这种情况下使用函数,但是我需要检查"> ="或"<="条件.目前他们的例子失败了:

> .1 >= .3/3
[1] TRUE
> .1 <= .3/3
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

是否有类似于all.equal的函数来检查不等式?

谢谢,

伊利亚

mob*_*mob 8

主要测试all.equal是是否abs(x-y) < tolerance对某些价值观xy和一些小tolerance.等效不等式测试将检查:

x <= y:         x-y < tolerance
x < y:          x-y < -tolerance
x >= y:         x-y > -tolerance
x > y:          x-y > tolerance
Run Code Online (Sandbox Code Playgroud)


Sha*_*ane 7

看到这些问题:

一般来说,您可以通过包含上述第二个链接的容差级别来处理此问题.


Dir*_*tel 6

请参阅R 常见问题条目为什么 R 认为这些数字不相等以及其中的引用。

  • 当然是,或者你读了另一个条目 7.31。示例中的 `sqrt(2)*sqrt(2) == 2` 显示为 FALSE,这里是同样的问题:浮点数的表示。 (4认同)
  • 这很有趣,但不是对 OP 的回答。 (2认同)