R中大整数的乘法

4 r

我试图繁殖111111111*111111111,这是相同的111111111^2,并得到不正确的结果.它应该给12345678987654321,但它给出了舍入误差.我是否需要为长数使用某些变量类型,或者这是R的错误吗?

Das*_*son 18

'gmp'包允许你对大的值进行操作.

> library(gmp)
> j <- 111111111
> k <- as.bigz(j)
> mul.bigz(k, k)
[1] "12345678987654321"
Run Code Online (Sandbox Code Playgroud)


one*_*top 7

它不是R的限制,它是双精度浮点运算的限制.标准双精度浮点数具有大约16个十进制数字的精度.总和的答案需要17. R没有更高精度的变量类型,但许多其他语言也没有.


Mat*_*wle 6

此外,来自 Romain Francois 的新包int64