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


