对于两个大整数字符串相加,很多语言提供了原生支持。
比如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("");
}
以上就是 javascript趣题:大整数字符串相加的内容。