11.大数相加

题目描述

如何实现两个非常大的数字(已经超出了Number范围)的加法运算。

注意由于这两个已经超过了Number范围,因此不能用Number存,这里我们选择使用字符串存储。

思路

我们只要将两个数字前面补0至相同的长度,然后从低位到高位进行相加, 同时用一个变量记录进位的信息即可。

参考代码

function bigNumberSum(a, b) {
  // 123456789
  // 000009876

  // padding
  let cur = 0;
  while (cur < a.length || cur < b.length) {
    if (!a[cur]) {
      a = "0" + a;
    } else if (!b[cur]) {
      b = "0" + b;
    }
    cur++;
  }

  let carried = 0;
  const res = [];

  for (let i = a.length - 1; i > -1; i--) {
    const sum = carried + +a[i] + +b[i];
    if (sum > 9) {
      carried = 1;
    } else {
      carried = 0;
    }
    res[i] = sum % 10;
  }

  if (carried === 1) {
    res.unshift(1);
  }

  return res.join("");
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、计算机的发展史 01改变世界:没有计算器的日子怎么过——手动时期的计算工具 所谓计算机,顾名思义,就是用于计...
    文思汇集阅读 7,970评论 1 8
  • 1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或...
    哈哈哎呦喂阅读 3,989评论 0 0
  • 机器数之原码反码补码 基本概念 字在计算机中,一串数码作为一个整体来处理或运算的,称为一个计算机字,简称字。字通常...
    Showdy阅读 4,814评论 0 2
  • 爱上了奔跑, 爱上了主宰的方向, 忘记了自己应该有的模样, 我有多么辛苦就会有多么自由, 我只能奔跑, 害怕在黑夜...
    樊登小读者河津分会阅读 1,576评论 0 0
  • 爱是好的,但总会收不到!为什么?即使知道所有的行为都基于爱,都总觉得所作所为完全是背道而驰! 有些话说出来,就有伤...
    思思培阅读 1,310评论 0 0

友情链接更多精彩内容