前言
我们知道当在浏览器输入 9999999999999999999999 + 9999999999999999999999 时,它的结果是一个科学计数法。往往我们不需要也看不懂科学计数法。所以需要实现一个函数来实现大数相加。
分析
我们可以通过把一个很大的数字,拆分成一小部分一小部分的加起来。
通过字符串形式,我们手动模拟进位的操作
如果当他满 10 的时候,我们保留个位,将十位(也就是进位)保存起来
当下次计算的时候,我们加上进位
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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('') }
|