js如何实现长整数相加
实现长整数相加的方法
在JavaScript中处理大整数相加时,由于数字精度限制(Number.MAX_SAFE_INTEGER为9007199254740991),直接相加可能导致精度丢失。以下是几种解决方案:
方法一:字符串模拟竖式加法
将数字转为字符串,从低位到高位逐位相加并处理进位:
function addBigNumbers(a, b) {
let i = a.length - 1;
let j = b.length - 1;
let carry = 0;
let result = '';
while (i >= 0 || j >= 0 || carry > 0) {
const digitA = i >= 0 ? parseInt(a[i--]) : 0;
const digitB = j >= 0 ? parseInt(b[j--]) : 0;
const sum = digitA + digitB + carry;
result = (sum % 10) + result;
carry = Math.floor(sum / 10);
}
return result;
}
方法二:使用BigInt类型
ES2020引入的BigInt可直接处理大整数:
function addBigNumbers(a, b) {
return (BigInt(a) + BigInt(b)).toString();
}
注意:输入需要是字符串或BigInt,避免数字字面量被当作普通Number。
方法三:第三方库
使用如bignumber.js等专业数学库:

const BigNumber = require('bignumber.js');
function addBigNumbers(a, b) {
return new BigNumber(a).plus(b).toString();
}
注意事项
- 字符串方法需处理前导零和非法输入
- BigInt兼容性问题(IE不支持)
- 性能考虑:超长数字(万位以上)建议用字符串方法分块处理






