使用超过16位数的整数进行计算

时间:2018-03-23 13:28:02

标签: r gmp

我有两个大整数。两者都有超过16位数字(准确地说是20位),我知道由于双精度浮点运算,我在使用这些数字进行计算甚至将它们存储在变量中时都有局限性(独立于编程语言)。

但是,我可能会gmp库应该处理它们,但不幸的是它没有。可以计算更大的整数,但计算的使用输入不应超过16位。

以下是示例:

library(gmp)
x <- as.bigz(99899999999996937503)
y <- as.bigz(99899999999996936542)
z <- sub.bigz(x,y)

在这两种情况下,它们都存储为99899999999996936192z等于0

是否有任何库接受超过16位数的整数作为输入?

1 个答案:

答案 0 :(得分:4)

正如as.bigz的帮助中所解释的那样,你需要在这些大整数(即输入为字符)周围加上引号,否则R将它们转换为普通整数,然后传递给as.bigz ... < / p>

library(gmp)
x <- as.bigz("99899999999996937503")
y <- as.bigz("99899999999996936542")
z <- sub.bigz(x,y)

z
Big Integer ('bigz') :
[1] 961