js 大数相加和小数相加

一、大数相加

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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容