Skip to content

大数相加

🕒 Published at:
js
function bigIntAdd(a, b) {
  let len = Math.max(a.length, b.length)
  a = a.padStart(len, '0')
  b = b.padStart(len, '0')
  // console.log(a)
  // console.log(b)
  let carry = 0
  let result = ''
  for (let i = len - 1; i >= 0; i--) {
    let sum = +a[i] + +b[i] + carry
    result = (sum % 10) + result
    carry = Math.floor(sum / 10)
  }
  if (carry) {
    result = '1' + result
  }
  return result
}

// 测试
{
  let a = '1111111111111111111111111111111111111111'
  let b = '2222222222222222222222222222222222222222'
  let res = bigIntAdd(a, b)
  console.log(res === '3333333333333333333333333333333333333333')
}

{
  let a = '1111111111111111111111111111111111111111'
  let b = '9999999999999999999999999999999999999999'
  let res = bigIntAdd(a, b)
  console.log(res === '11111111111111111111111111111111111111110')
}