为什么这个简单的陈述在R?
中评估为FALSE
mean(c(7.18, 7.13)) == 7.155
此外,为了使这个TRUE
声明,我该怎么做?谢谢!
答案 0 :(得分:3)
这可能是由于小的舍入误差造成的。四舍五入到小数点后三位表示它们相等:
round(mean(c(7.18, 7.13)), 3) == 7.155
通常,不要依靠数字比较来给出预期的逻辑输出:)
答案 1 :(得分:3)
浮点运算并不准确。 this question的答案有更多信息。
你实际上可以看到这个:
> print(mean(c(7.18,7.13)), digits=16)
[1] 7.154999999999999
> print(7.155, digits=16)
[1] 7.155
一般情况下,不要将浮点数比较为相等(这几乎适用于所有编程语言,而不仅仅是R)。
您可以使用all.equal
进行不精确的比较:
> all.equal(mean(c(7.18,7.13)), 7.155)
[1] TRUE