之前面试有被问到js的大数相加怎么算,最早时也说不出所以来,后来查阅相关资料,js貌似有BigInt专门处理大数问题,但是用js也可以处理,需要梳理好逻辑,下面仅为记录下实现的一种方法,仅供参考, 直接上干货,可以多尝试下。
function add(a ,b) {
// 取两个数字的最大长度
let maxLength = Math.max(a.length, b.length);
// 用 0 去补齐长度
a = a.padStart(maxLength , 0); // "00000000000003782647863278468012934670"
b = b.padStart(maxLength , 0); // "23784678091370408971329048718239749083"
// 定义加法过程中需要用到的变量
let t = 0;
let f = 0; // "进位"
let sum = "";
for(let i = maxLength-1; i >= 0; i--){
t = parseInt(a[i]) + parseInt(b[i]) + f;
f = Math.floor(t / 10);
sum = t % 10 + sum;
}
if(f == 1){
sum = "1" + sum;
}
return sum;
}
add('3782647863278468012934670', '23784678091370408971329048718239749083')