请考虑以下内容:
probs <- c(0.05, rep(0.95/99, 99))
根据以下内容显然加起来为1
sum(probs).
但是,当我键入
sum(probs == 1)
我得到0(即布尔值FALSE)。
为什么会出现这种差异?这两个命令不应该相等吗?
作为测试,我将它们与all.equal()进行了比较:
all.equal(sum(probs), sum(probs == 1))
[1] "Mean relative difference: 1"
all.equal(sum(probs == 1), sum(probs))
[1] "Mean absolute difference: 1",
这似乎暗示着不平等,但是为什么呢?
我的猜测是R中的数值精度处理(即Machine epsilon)不够严格。
有什么想法吗?