大数相加

2018.08.21晚接到tx电话面试,面试的坑后面再找时间填。后约定接下来的三天会有远程共享桌面的笔试,后来就没有消息了,猜想应该是进入了备胎池,这次之后反倒在盲目慌乱的秋招中找到了一点方向,尽人事就好。学习与总结思考,关注前沿动态,是目前这个阶段的我能够想到的,长期从事开发并且希望在此有所发展的程序媛必备的基本技能之一。

以后会将每次的微小收获在此记录,权当做总结与思考。

实现超出整数存储范围的两个大正整数相加 function add(a, b)。

注意:参数 a 和 b 以及函数的返回值都是字符串

//实现超出整数存储范围的两个大整数相加,参数a和b以及函数的返回值都是字符串
        function func(){
            var a = '212323443645769879834242345'
            var b = '2056764062873453875236'
            var n1 = a.length;
            var n2 = b.length;
            for(let i = 0; i < Math.max(n1, n2)-Math.min(n1, n2); i++){
                if(n1 > n2) b = '0' + b;
                if(n1 < n2) a = '0' + a;
            }
            a = a.split('').reverse();
            b = b.split('').reverse();
            //split()基于指定的分隔符将一个字符串分隔成多个子字符串, 并将结果放在一个数组中
            //reverse() 反转数组项的顺序
            var n = Math.max(n1, n2);
            var result = Array.apply(this, Array(n)).map((item, i) => {
                return 0;
            })
            //生成一个长度为n的每个元素都为0的数组
            for(let k = 0; k < n; k++){
                var temp = parseInt(a[k])+parseInt(b[k])
                if(temp > 9){
                    result[k] += temp -10 ;
                    result[k+1] = 1;
                }else{
                    result[k] += temp;
                }
            }
            //parseInt() 解析一个字符串,并返回整数
            console.log(result.reverse().join('').toString())
            //将数组项基于指定的分隔符以字符串输出
        }

数字类型的范围:

  • Number.MAX_VALUE = 1.7976931348623157e+308
  • Number.MIN_VALUE = 5e-324

整数类型的范围:

  • -2-53-253

你可能感兴趣的:(大数相加)