可能重复:
为什么这些数字不相等?
在Gnu R:
which(seq(0, 1600, 0.05) == 0.3) returns
integer(0)
Run Code Online (Sandbox Code Playgroud)
但是这个:
which(round(seq(0, 1600, 0.05),2) == 0.3) returns
[1] 7
Run Code Online (Sandbox Code Playgroud)
这个seq()功能怎么了?
这实际上是R FAQ 7.31关于浮点数之间的比较 - 导致了着名的"每个计算机科学家应该知道浮点数".
简而言之,使用identical()和其他辅助函数来比较相对于小值\ epsilon,因为浮点类型不能完全相等.