前言
我们知道当在浏览器输入 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('')
}