可能重复:
R中的数字比较困难
大家好,
根据“R Inferno”论文。我现在在 R 地狱的第一圈。这是异教徒期望 0.1 == 0.3/3 的地方。Paper 建议all.equal
在这种情况下使用函数,但是我需要检查 ">=" 或 "<=" 条件。使用当前示例失败:
> .1 >= .3/3
[1] TRUE
> .1 <= .3/3
[1] FALSE
是否有与 all.equal 类似的函数来检查不等式?
谢谢,
伊利亚
可能重复:
R中的数字比较困难
大家好,
根据“R Inferno”论文。我现在在 R 地狱的第一圈。这是异教徒期望 0.1 == 0.3/3 的地方。Paper 建议all.equal
在这种情况下使用函数,但是我需要检查 ">=" 或 "<=" 条件。使用当前示例失败:
> .1 >= .3/3
[1] TRUE
> .1 <= .3/3
[1] FALSE
是否有与 all.equal 类似的函数来检查不等式?
谢谢,
伊利亚
的主要测试all.equal
是是否abs(x-y) < tolerance
为一些值x
和y
一些小tolerance
。等效不等式测试将检查:
x <= y: x-y < tolerance
x < y: x-y < -tolerance
x >= y: x-y > -tolerance
x > y: x-y > tolerance
请参阅R 常见问题解答条目为什么 R 认为这些数字不相等以及其中的引用。
您可以尝试明智地使用zapsmall()
which 似乎可以提供您正在寻找的行为。我不知道这是否适用于所有情况。例如,
.1 >= zapsmall(.3/3)
[1] TRUE
> .1 <= zapsmall(.3/3)
[1] TRUE