看看这个简单的R代码:
seq(0.3, 2, 0.01)[56]
## [1] 0.85
seq(0.3, 2, 0.01)[56] == 0.85
## [1] FALSE
为什么我得到这个以及进行这种平等测试的最佳方法是什么?
答案 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?