栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用js实现一个加法的方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用js实现一个加法的方法

Javascript 能表示并进行精确算术运算的整数范围为:[-253-1,253-1]。

Math.pow(2, 53)-1 ;// 9007199254740991-Math.pow(2, 53)-1 ;// -9007199254740991console.log(Number.MAX_SAFE_INTEGER) ;// 9007199254740991console.log(Number.MIN_SAFE_INTEGER) ;// -9007199254740991

只考虑大整数相加的情况(不算0.1+0.2之类的):

function sumStrings(a,b) {      if(typeof a !== 'String' || typeof b !== 'String')return;//参数必须字符串    //通过补零让a和b对齐      while(a.length < b.length)a = "0" + a;  //若a比b短,则对a补零      a = a.split('');//字符串转化成数组    while(b.length < a.length)b = "0" + b;  //若b比a短,则对b补零    b = b.split('');//字符串转化成数组    var addOne = 0;  //是否有进位      var result = []; //结果数组      //从个位开始相加      while(a.length){        var c1 = a.pop() - 0;//pop:删除数组最后一个元素,并返回该元素        var c2 = b.pop() - 0;        var sum = c1 + c2 + addOne;          //若数字相加大于9,则进位          if(sum > 9){   result.unshift(sum - 10);   addOne = 1;          }          else{   result.unshift(sum);   addOne = 0;          }      }      //应付下面的情况:      if(addOne) result.unshift(addOne);  //"99" + "11" => "110",它最后仍然要进位    if(!result[0])result.splice(0,1);  //"01" + "01" => "2",而不是"02",所以移除第一位的"0"      return result.join("");  }sumStrings("10000000000000000000000000","11111111111111111111111111");//21111111111111111111111111
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/391399.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号