超过 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
我有两个大整数。两者都有超过 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