如何获得JS中大数算术运算的精确整数结果?



如何获得JS中大数乘运算的精确整数结果?

假设我们有:

var a = 75643564363473453456342378564387956906736546456235342;
var b = 34986098309687982743378379458582778387652482;

将这些数字相乘,得到一个科学"e"符号的数字。如何显示整个精确的整数结果数?

我试过使用这个库 https://github.com/peterolson/BigInteger.js

自述文件 说:

请注意,大于9007199254740992和 小于-9007199254740992未精确表示 数字,不会产生确切的结果。如果您正在处理 超出该范围的数字,最好传入字符串。

但是你如何用字符串做数学呢?

使用bigInt,正如您所暗示的,您需要使用字符串而不是数字来正确表示它们。

bigInt("75643564363473453456342378564387956906736546456235342").multiply("34986098309687982743378379458582778387652482");

我认为这个问题与如何避免在javascript中为大数字进行科学符号重复

此功能取自上面的链接。

function toFixed(x) {
if (Math.abs(x) < 1.0) {
var e = parseInt(x.toString().split('e-')[1]);
if (e) {
x *= Math.pow(10,e-1);
x = '0.' + (new Array(e)).join('0') + x.toString().substring(2);
}
} else {
var e = parseInt(x.toString().split('+')[1]);
if (e > 20) {
e -= 20;
x /= Math.pow(10,e);
x += (new Array(e+1)).join('0');
}
}
return x;
}
alert(toFixed(a*b));