js 大数相加

477 阅读1分钟

之前面试有被问到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')