前言

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

分析

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

代码实现

  1. const addStrings = (num1, num2) => {
  2. let i = num1.length - 1;
  3. let j = num2.length - 1;
  4. let add = 0;
  5. const answer = []
  6. while (i >= 0 || j >= 0 || add !== 0) {
  7. const val1 = i >= 0 ? num1.charAt(i) - '0' : 0
  8. const val2 = j >= 0 ? num2.charAt(j) - '0' : 0
  9. const result = val1 + val2 + add
  10. answer.push(result % 10)
  11. add = Math.floor(result / 10)
  12. i -= 1
  13. j -= 1
  14. }
  15. return answer.reverse().join('')
  16. }