js实现两个超大数的相加

129 阅读1分钟
// 实现超出整数存储范围的两个大整数相加(参数和返回值都是字符串)
function bigIntAdd(a, b) {
  let aLen = a.length,
    bLen = b.length;
  let allLen = 0;
  aLen > bLen ? (b = b.padStart(aLen, '0'), allLen = aLen) : (a = a.padStart(bLen, '0'), allLen = bLen);
  const aArr = a.split('')
  const bArr = b.split('')
  const resultArr = []
  let shouldAddOne = false
  for (let i = allLen - 1; i >= 0; i--) {
    let add = Number(aArr[i]) + Number(bArr[i]) + (shouldAddOne ? 1 : 0)
    add > 9 ? (resultArr.push(add % 10), shouldAddOne = true) : (resultArr.push(add), shouldAddOne = false)
    if(i === 0) {
      shouldAddOne ? resultArr.push(1) : null
    }
  }
  return resultArr.reverse().join('')
}

let result = bigIntAdd('0', '0')
console.log(result)