我需要将一个字符串转换成类似于JavaScript中的BigInteger
的BigInt。
示例:
var reqId = "78099864177253771992779766288266836166272662";
var result = parseInt(reqId);
document.write(result);
由于JavaScript只允许整数最大为(2^53)-1,因此导致结果值不匹配。
有没有什么方法可以解决这个问题?
我需要将一个字符串转换成类似于JavaScript中的BigInteger
的BigInt。
示例:
var reqId = "78099864177253771992779766288266836166272662";
var result = parseInt(reqId);
document.write(result);
由于JavaScript只允许整数最大为(2^53)-1,因此导致结果值不匹配。
有没有什么方法可以解决这个问题?
BigInt
现在是JavaScript的本地语言特性。它已经通过TC39进程的Stage 3,并且正在V8 v6.7和Chrome 67中使用。
要将包含有效数字文字的字符串转换为BigInt
,请使用全局BigInt
函数:
const string = '78099864177253771992779766288266836166272662';
BigInt(string);
// 78099864177253771992779766288266836166272662n
如果您只想将数字值硬编码到代码中,无需从字符串转换,可以使用BigInt
字面量:
const value = 78099864177253771992779766288266836166272662n;
BigInt(78099864177253771992779766288266836166272662)
返回 78099864177253773769881977469241629459087360n
。它们不相同。 - Centellvar largeNumber = bigInt("75643564363473453456342378564387956906736546456235345");
您可以在此处找到该库的文档:https://www.npmjs.com/package/big-integer。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-in-multiple-ways
const fourtyTwoAsBigInt = 42n;
assert.strictEqual(BigInt("42"), fourtyTwoAsBigInt);