以下代码显然是错误的.有什么问题?
i <- 0.1
i <- i + 0.05
i
## [1] 0.15
if(i==0.15) cat("i equals 0.15") else cat("i does not equal 0.15")
## i does not equal 0.15
Run Code Online (Sandbox Code Playgroud) 我试图比较R中的两个数字作为if语句条件的一部分:
(a-b) >= 0.5
在这个特定的例子中,a = 0.58和b = 0.08 ......但仍然(a-b) >= 0.5是假的.我知道使用==确切数字比较的危险,这似乎有关:
(a - b) == 0.5) 是假的,而
all.equal((a - b), 0.5) 是真的.
我能想到的唯一解决方案是有两个条件:(a-b) > 0.5 | all.equal((a-b), 0.5).这有效,但这真的是唯一的解决方案吗?我应该=永远地宣誓比较运营商的家庭吗?
为清晰起见编辑:我知道这是一个浮点问题.更重要的是,我要问的是:我该怎么做呢?什么是处理R中大于或等于比较的合理方法,因为>=它不能真正被信任?
可能重复:
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的函数来检查不等式?
谢谢,
伊利亚