我尝试乘以111111111*111111111
,这与 相同111111111^2
,但结果不正确。它应该给出12345678987654321
,但它给出了一个舍入误差。我是否需要对长数字使用一些特殊的变量类型,或者这是 R 的错误?
Puzzzled
问问题
2873 次
3 回答
19
'gmp' 包将允许您对那么大的值进行操作。
> library(gmp)
> j <- 111111111
> k <- as.bigz(j)
> mul.bigz(k, k)
[1] "12345678987654321"
于 2011-11-17T23:16:09.847 回答
7
这不是 R 具体的限制,而是双精度浮点运算的限制。标准的双精度浮点数具有大约 16 位十进制数字的精度。总和的答案需要 17。R 没有更精确的变量类型,但许多其他语言也没有。
于 2011-11-17T22:57:04.277 回答
6
此外,来自 Romain Francois 的新包int64 。
于 2011-11-21T13:18:26.960 回答