R

时间:2018-09-21 01:45:26

标签: r precision

请考虑以下内容:

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)不够严格。

有什么想法吗?

0 个答案:

没有答案