一、大数相加
js的数字有一个大小限制,超出会溢出,现写一个add(num:string,num:string):string
求大数之和
栗子:add("2312421212512521111112421412412","123")
function add(num1,num2){
let maxlen=Math.max(num1.length,num2.length);
let a=num1.padStart(maxlen,0);
let b=num2.padStart(maxlen,0);
let res="";
let next=0; //用一个变量存每一次的进位
for(let i=maxlen-1;i>=0;i--){
let acc=Number(a[i])+Number(b[i])+next;
next=Math.floor(acc/10);
res=acc%10+res;
}
if(next===1)
res="1"+res; //如果到最高位还有进位就再加一位
return res;
}
二、小数相加
float型浮点数相加会出现问题,如0.1+0.3
思路和大数相加类似
//一种简单的方法
add(num1,num2){
let len1=(num1+"").split(".")[1].length;
let len2=(num2+"").split(".")[1].length;
let maxlen=Math.max(len1,len2);
let a=Math.pow(10,maxlen);
return (num1*a+num2*a)/a;
}