2

我在 R 中进行了一些模拟,我注意到我错过了一个模拟,在查看我的代码后,我发现了这种奇怪的 R 行为:

N <- 10000
prop <- 0.9
M <- N * (1 - prop)
print(M)
[1] 1000
print(as.integer(M))
[1] 999
4

1 回答 1

4

问题是0.9不能完全表示为二进制浮点值:

> sprintf('%.20f', 0.9)
[1] "0.90000000000000002220"

以下所有计算都给出了不准确的结果:

> sprintf('%.20f', 10000 * (1 - 0.9))
[1] "999.99999999999977262632"
于 2013-04-11T09:59:56.447 回答