我尝试将111111111*111111111
与111111111^2
相乘,但结果不正确。它应该给12345678987654321
,但它会给出舍入误差。我是否需要为长数使用某些变量类型,或者这是R的错误?
答案 0 :(得分:18)
'gmp'包允许你对大的值进行操作。
> library(gmp)
> j <- 111111111
> k <- as.bigz(j)
> mul.bigz(k, k)
[1] "12345678987654321"
答案 1 :(得分:7)
这不是R的限制,它是double precision floating-point算术的限制。标准双精度浮点数具有大约16个十进制数字的精度。总和的答案需要17. R没有更高精度的变量类型,但许多其他语言也没有。
答案 2 :(得分:4)
另外,来自Romain Francois的新包int64。
答案 3 :(得分:0)
我为R建立了一个小型库来进行超过17位数的计算。如果您愿意,您甚至可以拥有超过500位数字。目前它还可以添加还包括智能小数检测。我不确定我是否可以在这里分享我的文章的链接。