如何在JavaScript中将字符串转换为bigInt

问题描述 投票:0回答:4

我需要将字符串转换为 BigInt,就像 Javascript 中的

BigInteger

示例

var reqId = "78099864177253771992779766288266836166272662";
var result = parseInt(reqId);
document.write(result);

结果值不匹配,因为 JavaScript 只允许最大 (2^53)-1 的整数。

有什么办法可以克服这个问题吗?

javascript node.js biginteger bigint
4个回答
58
投票

BigInt
现在是原生 JavaScript 语言功能。它处于 TC39 流程的第 3 阶段,并在 V8 v6.7 和 Chrome 67 中发布。

要将包含有效数字文字的字符串转换为

BigInt
,请使用全局
BigInt
函数:

const string = '78099864177253771992779766288266836166272662';
BigInt(string);
// 78099864177253771992779766288266836166272662n

如果您只想将数值硬编码到代码中,则无需从字符串进行转换;使用

BigInt
文字代替:

const value = 78099864177253771992779766288266836166272662n;

5
投票

您可以使用名为 BigInteger.js 的 JavaScript 库来实现此目的。它是 JavaScript 的任意长度整数库,允许对无限大小的整数进行算术运算,而不受内存和时间限制。可以从以下位置下载该库:这个链接。喜欢

var largeNumber = bigInt("75643564363473453456342378564387956906736546456235345");
您可以在这里找到 lib 文档https://www.npmjs.com/package/big-integer


1
投票

您可以使用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

0
投票

创建 BigInt 有多种方法,在这个 jskata 中你可以看到它们并尝试一下 https://jskatas.org/katas/es11/language/bigint/basics/#creating-one-can-be-done -多种方式

      const fourtyTwoAsBigInt = 42n;
      assert.strictEqual(BigInt("42"), fourtyTwoAsBigInt);
© www.soinside.com 2019 - 2024. All rights reserved.