今天遇到这个问题。。。。
function sumStrings(a, b) {//输入的a,b都是只包含数字的字符串
var output;
output = a * 1 + b * 1;//转换为数字
if (output.toString().indexOf("+") == -1) {//判断不为科学计数法输出
output = output.toString();
} else {//判断为科学计数法输出
a = a.split("");//字符串分割数组
b = b.split("");//字符串分割数组
if (a.length > b.length) {
output = test(a, b);
} else {
output = test(b, a);
}
}
return output;
}
//把科学计数法准换为数字
function test(a, b) {//要求a的长度比b的长度大
var i, arr = [],
j = 0;
for (i = 0; i < a.length; i++) {
if (i < b.length) {//在共有的位进行操作
var c = a[a.length - i - 1] * 1 + b[b.length - i - 1] * 1;//取得同位相加数
if (c < 10) {//判断同位相加数小于10
if (j + c === 10) {//判断位数加进位数为10
arr.unshift(0);//位数为0
j = 1;//重置进位为1
} else {//判断位数加进位数不为10
arr.unshift(j + c);//位数为进位加同位相加数
j = 0;//重置进位为0
}
} else {//判断同位相加数大于等于10
arr.unshift(c + j - 10);//位数为c+j-10
j = 1;//重置进位为1
}
} else {//非共有的位操作
var c = a[a.length - i - 1] * 1;//取得位
if (j === 1) {//进位判断
if ((j + c) === 10) {//判断位数加进位数为10
arr.unshift(0);//位数为0
j = 1;//重置进位为1
} else {//判断位数加进位数不为10
arr.unshift(j + c);//位数为进位加同位相加数
j = 0;//重置进位为0
}
} else {
arr.unshift(c);//进位为0,直接放入
}
}
}
if (j === 1) { arr.unshift(1) }//最后判断若a和b同长度,且首位相机大于等于0是,数组添加一位1
return arr.join("");//最后字符串形式输出
}