您好,欢迎来到华拓科技网。
搜索
您的当前位置:首页JavaScript趣题:大整数字符串相加

JavaScript趣题:大整数字符串相加

来源:华拓科技网


对于两个大整数字符串相加,很多语言提供了原生支持。

比如Java,提供了BigInteger类,而JS这方面是没有支持的,实现就要靠咋们自己了。

下面这个字符串相加函数,接收两个字符串参数,并返回它们相加之后的结果,也是字符串形式。

主要思路还是逐位相加并进位,实现时要考虑的细节还是蛮多的。

function sumStrings(a,b) { 
 //通过补零让a和b对齐 
 //若a比b短,则对a补零 
 while(a.length < b.length){ 
 a = "0" + a; 
 } 
 //若b比a短,则对b补零 
 while(b.length < a.length){ 
 b = "0" + b; 
 } 
 //是否有进位 
 var addOne = 0; 
 //结果数组 
 var result = []; 
 //从个位开始相加 
 for(var i=a.length-1;i>=0;i--){ 
 var c1 = a.charAt(i) - 0; 
 var c2 = b.charAt(i) - 0; 
 var sum = c1 + c2 + addOne; 
 //若数字相加大于9,则进位 
 if(sum > 9){ 
 result.unshift(sum - 10); 
 addOne = 1; 
 } 
 else{ 
 result.unshift(sum); 
 addOne = 0; 
 } 
 } 
 //应付下面的情况: 
 //"99" + "11" => "110" 
 //它最后仍然要进位 
 if(addOne){ 
 result.unshift(addOne); 
 } 
 //应付如下的情况 
 //"01" + "01" => "2" 
 //而不是"02",所以移除第一位的"0" 
 if(!result[0]){ 
 result.splice(0,1); 
 } 
 return result.join(""); 
}

Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务