为什么
format(4444444444444444444,scientific=FALSE)
返回“4444444444444444672”?
我认为这可能是一个整数精度的东西,但这个数字相对较小。谢谢!
我在 Ubuntu Linux 上运行 R 版本 3.0.0。
如果你给 R 一个大于的整数:
> .Machine$integer.max
[1] 2147483647
它将其转换为双精度。R-FAQ有7.31。与浮点精度相关的问题通常出现在 SO:Controlling number of decimal digits in print output in R
(矢量索引的大小随着 R 的最后一个版本(3.0.0)而增加,并且整数的最大大小将来可能会扩大。我不太明白我们如何保持限制整数的大小,还可以访问更大的向量索引。)
这不是一个 32 位整数。
R> as.integer(4444444444444444444)
[1] NA
Warning message:
NAs introduced by coercion
它是一个双精度浮点数,只有 15-16 位精度。以上失败,因为数字大于.Machine$integer.max
。是...672
舍入误差。如果您需要使用大量数字,请考虑使用gmp 之类的软件包。