超过 16 位整数的计算

Calculations with integers with more than 16 digits

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

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

示例如下:

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

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

有没有接受超过 16 位整数作为输入的库?

as.bigz 的帮助中所述,您需要用引号将这些大整数括起来(即作为字符输入),否则 R 会在传递给 as.bigz 之前将它们转换为普通整数。 .

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

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