【发布时间】:2012-09-11 04:48:42
【问题描述】:
我正在用 R 编写一个函数,要求我将计数器递增 0.05。当我以计数器的值为条件时,我被告知该值不是它所显示的值。
例子:
将计数器设置为 0
cntr
[1] 0
将计数器增加 0.05 并进行测试
cntr
> cntr == 0.05
[1] TRUE
到目前为止,一切都很好。但经过几次迭代后,会发生以下情况:
> cntr <- cntr + 0.05; cntr;
[1] 0.1
> cntr == 0.1
[1] TRUE
> cntr <- cntr + 0.05; cntr;
[1] 0.15
> cntr == 0.15
[1] FALSE
发生了什么,为什么? cntr 返回的值是 0.15 但不等于这个值? 进一步调查表明:
> cntr < 0.1500000000000001
[1] TRUE
> cntr < 0.15000000000000001
[1] FALSE
和
round(cntr, 2) == 0.15 [1] 是的
是我误解了什么,还是有什么我没有看到?任何帮助将不胜感激。谢谢。
【问题讨论】:
-
这是FAQ 7.31。
标签: r