一. 超大数相加问题?
js超大整数相加 js和任何一门语言一样,对其数值的范围有限制。 如果我们想要对一个超大的整数 (> Number.MAX_SAFE_INTEGER)进行加法运算,但是又想输出一般形式,那么使用 + 是无法达到的,一旦数字超过 Number.MAX_SAFE_INTEGER 数字会被立即转换为科学计数法,并且数字精度相比以前将会有误差。在此时就需要自己实现一套加法算法。
function add(str1, str2) {
if (Number(str1) > Number(str2)) {
var len = str1;
} else {
var len = str2;
}
var len1 = str1.length;
var len2 = str2.length;
var temp = 0;
var total = [];
for (let i = 0; i < len.length; i++) {
temp += Number(str1.charAt(len1 - i - 1)) + Number(str2.charAt(len2 - i - 1));
if (temp > 9) {
// 如果两数相加大于9,则把余数放进total
// temp=1 跟下一对相加
total.unshift(temp % 10);
temp = 1;
} else {
// 如果两数相加小于10,则把余数直接放进total
total.unshift(temp);
temp = 0;
}
}
total = total.join("");
return total
}
const num1 = '111111111111111111111111111111111111111'
const num2 = '222222222222222222222222222222222222222'
document.write(add(num1, num2)); //结果为333333333333333333333333333333333333333