R中的等式检验与seq

时间:2014-08-25 14:35:52

标签: r

看看这个简单的R代码:

seq(0.3, 2, 0.01)[56]
## [1] 0.85  
seq(0.3, 2, 0.01)[56] == 0.85
## [1] FALSE  

为什么我得到这个以及进行这种平等测试的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您需要在

中使用all.equal
all.equal(seq(0.3, 2, 0.01)[56],0.85)

这是因为在二进制中表示数字少于1的问题。一般来说,0.85不能用二进制精确写出,简单地输入0.85时使用的近似值与通过将近似值0.01加到近似值0.355倍所使用的近似值不同。

有关详细信息,请参阅此处: Why can't decimal numbers be represented exactly in binary?