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

rse*_*esh 8 javascript biginteger bigint node.js

我需要像BigIntegerJavascript 一样将字符串转换为bigint

var reqId = "78099864177253771992779766288266836166272662";
var result = parseInt(reqId);
document.write(result);
Run Code Online (Sandbox Code Playgroud)

由于JavaScript允许整数最多为2 ^ 53,因此结果值不匹配.

有没有办法克服这个问题?

Mat*_*ens 23

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

要将包含有效数字文字的字符串转换为a BigInt,请使用全局BigInt函数:

const string = '78099864177253771992779766288266836166272662';
BigInt(string);
// 78099864177253771992779766288266836166272662n
Run Code Online (Sandbox Code Playgroud)

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

const value = 78099864177253771992779766288266836166272662n;
Run Code Online (Sandbox Code Playgroud)

  • @Centell,那是因为您使用的是数字文字而不是字符串文字。创建非 BigInt 数字文字的那一刻,您就已经失去了精度。请参阅 https://v8.dev/features/bigint#api (4认同)

kam*_*dey 5

您可以使用名为BigInteger.js 的JavaScript 库来实现此目的。它是 JavaScript 的任意长度整数库,允许对无限大小的整数进行算术运算,而不受内存和时间限制。该库可以从此链接下载var largeNumber = bigInt("75643564363473453456342378564387956906736546456235345"); 您可以在此处找到该库的文档https://www.npmjs.com/package/big-integer


Sha*_*oor 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
Run Code Online (Sandbox Code Playgroud)