Node BigInt 函数对于 2 个不同的数字显示相同的结果

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

我正在尝试使用nodejs和

BigInt
函数非常准确地计算大数。但是
BigInt
函数对于 2 个不同的数字返回相同的结果:

输入> BigInt(1320**2+25000000000000**2)
输出> 624999999999999973944983552n

输入> BigInt(25000000000000**2)
输出> 624999999999999973944983552n

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

您尝试将常规数字传递给

BigInt()
构造函数,并且这些常规数字在到达 BigInt 构造函数之前就受到常规数字限制。 您需要传递字符串,或者如果您想对它们进行数学运算,则需要先将数值显式声明为 BigInt 值,然后再对它们进行数学运算。

例如,您可以这样做:

console.log(1320n ** 2n + 25000000000000n ** 2n)

console.log(25000000000000n ** 2n)

这会给你:

625000000000000000001742400n
625000000000000000000000000n

0
投票

如果有人对十六进制有疑问

console.log(BigInt("0x1456b678a3e50b2e").toString()); // 1465559358017702702
console.log(BigInt(0x1456b678a3e50b2e).toString()); // 1465559358017702656

© www.soinside.com 2019 - 2024. All rights reserved.