js如何实现长整数相加
实现长整数相加的方法
在JavaScript中,处理超出Number.MAX_SAFE_INTEGER(约9000万亿)的长整数相加时,需要使用字符串或数组来模拟逐位运算。以下是两种常见方法:
字符串逐位相加法
将长整数转换为字符串,从低位到高位逐位相加并处理进位:

function addBigNumbers(a, b) {
let result = '';
let carry = 0;
let i = a.length - 1;
let j = b.length - 1;
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.replace(/^0+/, '') || '0';
}
使用示例:

console.log(addBigNumbers('9999999999999999', '1')); // 输出 "10000000000000000"
使用BigInt原生支持
ES2020引入的BigInt类型可直接处理超长整数:
function addBigInt(a, b) {
return (BigInt(a) + BigInt(b)).toString();
}
使用示例:
console.log(addBigInt('9999999999999999', '1')); // 输出 "10000000000000000"
注意事项
- 字符串方法需要手动处理前导零和进位,适合所有JavaScript环境
BigInt方法更简洁但需要现代浏览器或Node.js环境(ES2020+)- 输入数字建议以字符串形式传递,避免科学计数法精度丢失
- 负数的相加需要额外处理符号判断
两种方法均可正确处理超过Number安全范围的整数相加,实际使用时可根据运行环境选择合适方案。






