js大数相加

2020-03-01  本文已影响0人  超级码力

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

function add(a,b){
    let arrA = (a+'').split(''),
        arrB = (b+'').split(''),
        res = '',
        acc = 0

    while(arrA.length || arrB.length || acc){
        acc += ~~arrA.pop() + ~~arrB.pop()
        res = (acc % 10) + res
        acc = acc > 9
    }
    return res.replace(/^0+/,'')
}

思路: 1.将传入的两个数转为数组

2.把数组的最后一个值拿出来相加,并取整(~~)

3.把相加的结果的个位数拿出来附给res(由于res是字符串所以这个地方相加的结果也就是字符串)

4.判断acc是否大于9,如果大于9则说明需要进1,这里判断如果是true则在下次相加时acc就会是1,false则为0。

5.当数组的长度都清空且acc也是0的时候就停止循环。

上一篇 下一篇

猜你喜欢

热点阅读