【发布时间】:2011-10-16 00:50:30
【问题描述】:
以下表达式的计算结果为 0.1,被认为大于 0.1。
> round(1740/600,0) - 1740/600
[1] 0.1
> (round(1740/600,0) - 1740/600) <= 0.1
[1] FALSE //???!!???
> (round(1740/600,0) - 1740/600) <= 0.1000000000000000000000000000000000000001
[1] TRUE
认为问题可能是由于四舍五入我尝试了这个结果相同:
> 3 - 2.9
[1] 0.1
> (3 - 2.9) <=0.1
[1] FALSE
那么,是什么给出的,我如何在不伪造截止值的情况下修复它?
【问题讨论】:
-
阅读此常见问题解答:cran.r-project.org/doc/FAQ/…
-
R Inferno 也不错。
标签: r floating-point floating-accuracy