为什么R将数字1000转换为999整数?

时间:2013-04-11 09:57:51

标签: r

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

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

1 个答案:

答案 0 :(得分:4)

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

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

以下所有计算都会产生不准确的结果:

> sprintf('%.20f', 10000 * (1 - 0.9))
[1] "999.99999999999977262632"