题目:大数相加
问题:如何实现两个非常大的数字(已经超出了Number范围)的加法运算。
思路:转字符串,长度拼接,循环遍历相加,大于9的记得向前进一位
由于这两个已经超过了Number范围,因此不能用Number存,这里我们选择使用字符串存储。
废话不多说,直接上代码!!!
bigNumberSum(a, b) {
let aStr = a + ''
let bStr = b + ''
let differ = aStr.length - bStr.length
for (var i = 0; i < differ; i++) {
if (differ > 0) {
bStr = '0' + bStr
} else {
aStr = '0' + aStr
}
}
let arr = []
for (var i = aStr.length -1; i >= 0; i--) {
let sum = Number(aStr[i])+ Number(bStr[i])
if (sum > 9) {
if (i - 1 < 0) {
arr.unshift(1)
}
arr[i-1] = 1
}
if (arr[i]) {
if (Number(arr[i]) + (sum % 10) > 9) {
arr[i-1] = 1
}
arr[i] = (Number(arr[i]) + (sum % 10)) % 10
} else {
arr[i] = sum % 10
}
}
console.log(arr.join(''));
return arr.join('')
},