R的Format函数返回奇数结果

时间:2013-05-21 14:10:19

标签: r integer format precision

为什么

format(4444444444444444444,scientific=FALSE)

返回“4444444444444444672”?

我认为它可能是一个整数精度的东西,但这个数字相对较小。谢谢!

我在Ubuntu Linux上运行R版3.0.0。

2 个答案:

答案 0 :(得分:5)

如果给R一个大于的整数:

> .Machine$integer.max
[1] 2147483647

它将它转换为double。 R-FAQ has 7.31Controlling number of decimal digits in print output in R。与浮点精度相关的问题通常出现在SO:{{3}}

(向量索引的大小随着R(3.0.0)的最后一个版本而增加,并且似乎未来可能会扩大整数的最大大小。我不太明白我们如何保持对整数大小的限制以及更大的访问向量索引。)

答案 1 :(得分:4)

这不是32位整数。

R> as.integer(4444444444444444444)
[1] NA
Warning message:
NAs introduced by coercion 

它是一个双精度浮点数,只有15-16个精度位。上述操作失败,因为该数字大于.Machine$integer.max...672是舍入错误。如果您需要使用大数字,请考虑gmp等包。