我需要将字符串转换为 BigInt,就像 Javascript 中的
BigInteger
示例
var reqId = "78099864177253771992779766288266836166272662";
var result = parseInt(reqId);
document.write(result);
结果值不匹配,因为 JavaScript 只允许最大 (2^53)-1 的整数。
有什么办法可以克服这个问题吗?
BigInt
现在是原生 JavaScript 语言功能。它处于 TC39 流程的第 3 阶段,并在 V8 v6.7 和 Chrome 67 中发布。
要将包含有效数字文字的字符串转换为
BigInt
,请使用全局 BigInt
函数:
const string = '78099864177253771992779766288266836166272662';
BigInt(string);
// 78099864177253771992779766288266836166272662n
如果您只想将数值硬编码到代码中,则无需从字符串进行转换;使用
BigInt
文字代替:
const value = 78099864177253771992779766288266836166272662n;
您可以使用名为 BigInteger.js 的 JavaScript 库来实现此目的。它是 JavaScript 的任意长度整数库,允许对无限大小的整数进行算术运算,而不受内存和时间限制。可以从以下位置下载该库:这个链接。喜欢
var largeNumber = bigInt("75643564363473453456342378564387956906736546456235345");
您可以在这里找到 lib 文档https://www.npmjs.com/package/big-integer
您可以使用mathjs:
var reqId = "78099864177253771992779766288266836166272662";
var myBigNumber = math.bignumber(reqId);
var res = math.add(myBigNumber, 1);
console.log(myBigNumber.toString());
// 7.8099864177253771992779766288266836166272662e+43
console.log(res.toString());
// 7.8099864177253771992779766288266836166272663e+43
创建 BigInt 有多种方法,在这个 jskata 中你可以看到它们并尝试一下 https://jskatas.org/katas/es11/language/bigint/basics/#creating-one-can-be-done -多种方式
const fourtyTwoAsBigInt = 42n;
assert.strictEqual(BigInt("42"), fourtyTwoAsBigInt);