最近遇到一个问题,如果两个字符串中保存的是数字,要把比较大的两个数字相加起来(比如:4121323422+9387864261),实现代码如下,在补零的过程比较复杂,如果有更简单的办法,欢迎留言告诉我,谢谢!
function sub(str1, str2){
// 补全0,并多补一位0
let arr1 = null,arr2 = null
if(str1.length>str2.length){
str1 = '0'+str1
for(let i=str2.length;i < str1.length;i++){
str2 = '0' + str2
}
arr1 = str1.split('')
arr2 = str2.split('')
} else{
str2 = '0'+str2
for(let i=str1.length;i < str2.length;i++){
str1 = '0' + str1
}
arr1 = str1.split('')
arr2 = str2.split('')
}
// 注意这里arr里边保存的还是字符串,需要转成数字后再相加
for (let i = arr1.length-1; i >= 0; i--) {
let temp = parseInt(arr1[i]) + parseInt(arr2[i])
arr1[i] = temp % 10
// 处理得到进位的结果
arr1[i - 1] = parseInt(arr1[i-1]) + Math.floor(temp / 10)
}
if(arr1[0] === 0){
return (arr1.join('')).substring(1)
} else{
return arr1.join('')
}
}
//测试一下结果
(function(){
console.log(sub('4121323429','9387864269'))
console.log(4121323422+9387864261)
})()