function bigSum(a, b) {
// 取两个字符串最大长度,方便后续长度较小的前补位
const maxLen = Math.max(a.length, b.length)
// 两数前补位:'0';如:'2'.padStart(4, '0') // '0002'
a = a.padStart(maxLen, '0')
b = b.padStart(maxLen, '0')
let sum = '' // 最终结果
let carry = 0 // 进位
for(let i = maxLen - 1; i >= 0; i--) {
const total = parseInt(a[i]) + parseInt(b[i]) + carry
carry = Math.floor(total / 10) // 向下取整,获取进位数
sum = total % 10 + sum
}
// 两数相加超过最大字符串长度
if (carry !== 0) {
sum = '' + carry + sum
console.log('两数相加超过最大字符串长度')
}
return sum
}
// let a = "9007199254740991";
// let b = "12345678999999999";
// bigSum(a, b) // "21352878254740990"
let a = "1";
let b = "999999999999";
bigSum(a, b) // "1000000000000"