美文网首页
JS大数字相加

JS大数字相加

作者: 一座被占用 | 来源:发表于2017-07-28 16:35 被阅读0次

问:如何计算大数字的相加?大到可以溢出的那种。

大数字相加,避免使用传统的相加(可能会溢出),所以使用数学题的思路来考虑这个问题。

目前只考虑两个大数字正整数的相加。

1.末尾加上末尾,如果大于等于10,产生进位。如果没有进位就是0.

2.倒数第二位加上倒数第二位,再加上进位,如果大于等于10,产生进位。

3.倒数第三位加上倒数第三位,再加上进位,如果大于等于10,产生进位。

。。。

直到加完数字小的位数。第一循环结束,进行第二循环。

第二循环是指,数字较小(或者长度较短)的数字已经加完结束了。剩下的就是第一循环加完后,剩下的进位与剩下的相加。

方法同上。

1.使用数组把加完的每一位结果存进去。

2.将两个数字转换为数组,并倒叙(由于个人习惯遍历从0开始)

具体代码如下:

let number1 = 999999989101112;

let number2 = 87919991;

let number1len = (number1.toString()).length;

let number2len = (number2.toString()).length;

let minlen = Math.min(number2len,number1len);

let maxlen = Math.max(number2len,number1len);

let maxValue = number1>number2?number1:number2;

let arr1 = [...(number1.toString())].reverse()

let arr2 = [...(number2.toString())].reverse()

let maxarr = arr1.length>arr2.length?arr1:arr2;

let jinwei = 0;

let result = []

for(let i = 0;i<minlen;i++){

      let tempArr1 = Number(arr1[i]),

      tempArr2 = Number(arr2[i]);

      result.push((tempArr1+tempArr2)%10+jinwei)

      jinwei = ~~((tempArr1+tempArr2)/10)

}

for(let i=minlen;i<maxlen;i++{

      let tempValue = Number(maxarr[i]);

      result.push((tempValue+jinwei)%10);

      jinwei = ~~((tempValue+jinwei)/10);

}

if(jinwei != 0)

      result.push(jinwei)

result = (result.reverse()).join("")

console.info(result)

运行结果

如果还有其他更好的方法,或者上面的方法可以优化,还请指教

相关文章

  • 2.3

    js运算符 +:数字相加;字符串相加(拼接) -,*,/(0/0=NaN非数字(是属于数字类型),1/0=infi...

  • 2018-7-11

    js运算符 ①加号 数字相加 字符串相加(拼接) ② 减号,乘号,除号(0/0=NaN非数字(是属于数字类型),1...

  • JS大数字相加

    问:如何计算大数字的相加?大到可以溢出的那种。 大数字相加,避免使用传统的相加(可能会溢出),所以使用数学题的思路...

  • js数字精度丢失问题

    一、JS数字精度丢失的一些典型问题 1. 两个简单的浮点数相加1 0.1 + 0.2 != 0.3// true ...

  • JQuery变量数字相加

    js中,一个变量和一个数字相加,得到的是相连之后的结果。 比如,var a = “1” + 2,结果为12,比如我...

  • 数字相加2048

    史上好玩的2048来了,没有乱七八糟的道具,一切凭借真本事。 游戏规则: 游戏的规则很简单,你需要控制所有方块向同...

  • JS计算0.1+0.2!=0.3的原因

    怎么解决那? 方法一 最简单的就是先把0.1和0.2换成别的数字(因为在js中只有这两个数相加有bug,例如:1....

  • js大数相加

    js的数值是有上限的,但是如果我们需要超过上限的数来相加怎么办,这个题也是面试经常会考的一个题。 思路: 1.将传...

  • 1005 Spell It Right

    题目 输入一个数字N,N<=10^100。将各位数字相加,最后输出相加和的各位数字的英文,两个连续的单词之间必须有...

  • 神奇的Javascript

    在JavaScript中,加法的规则其实很简单,只有两种情况:你只能把数字和数字相加,或者字符串和字符串相加,所有...

网友评论

      本文标题:JS大数字相加

      本文链接:https://www.haomeiwen.com/subject/jykflxtx.html