R中大整数的乘法

时间:2011-11-17 22:35:52

标签: r

我尝试将111111111*111111111111111111^2相乘,但结果不正确。它应该给12345678987654321,但它会给出舍入误差。我是否需要为长数使用某些变量类型,或者这是R的错误?

4 个答案:

答案 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位数字。目前它还可以添加还包括智能小数检测。我不确定我是否可以在这里分享我的文章的链接。