大数相加浅析

312 阅读1分钟

前言

我们知道当在浏览器输入 9999999999999999999999 + 9999999999999999999999 时,它的结果是一个科学计数法。往往我们不需要也看不懂科学计数法。所以需要实现一个函数来实现大数相加。

分析

我们可以通过把一个很大的数字,拆分成一小部分一小部分的加起来。
通过字符串形式,我们手动模拟进位的操作
如果当他满 10 的时候,我们保留个位,将十位(也就是进位)保存起来
当下次计算的时候,我们加上进位

代码实现

const addStrings = (num1, num2) => {
  let i = num1.length - 1;
  let j = num2.length - 1;
  let add = 0;
  const answer = []
  while (i >= 0 || j >= 0 || add !== 0) {
    const val1 = i >= 0 ? num1.charAt(i) - '0' : 0
    const val2 = j >= 0 ? num2.charAt(j) - '0' : 0
    const result = val1 + val2 + add
    answer.push(result % 10)
    add = Math.floor(result / 10)
    i -= 1
    j -= 1
  }
  return answer.reverse().join('')
}