我在R中做了一些模拟,我注意到我错过了一个模拟,在查看我的代码后,我发现了这个奇怪的R行为:
N <- 10000
prop <- 0.9
M <- N * (1 - prop)
print(M)
[1] 1000
print(as.integer(M))
[1] 999
答案 0 :(得分:4)
问题是0.9
不能完全表示为二进制浮点值:
> sprintf('%.20f', 0.9)
[1] "0.90000000000000002220"
以下所有计算都会产生不准确的结果:
> sprintf('%.20f', 10000 * (1 - 0.9))
[1] "999.99999999999977262632"