js减法精确计算

在项目中突然发现的问题

 

 

 

 

if(resdata.errorCode ===0 && resdata.data){
        resdata.data.list.map(item=>{
          i++;
          item.num = (resdata.data.pageNum)*10+i-10
          if(item.unitPrice && item.cost){

            item.youhuiCash =item.unitPrice-item.cost

          }
          
        })

  解决如下:
解决方案的原理是,将浮点数乘以(扩大)10的n次方倍,把浮点数变为整数后再进行相应的运算,最后将得到的结果除以(缩小)10的n次方倍。

 

 

//减法的精度控制
      floatSub(arg1,arg2){ 
      var r1,r2,m,n; 
      try{
        r1=arg1.toString().split(".")[1].length
        }catch(e){r1=0} 
      try{
        r2=arg2.toString().split(".")[1].length
        }catch(e){r2=0} 
      m=Math.pow(10,Math.max(r1,r2)); 
      //动态控制精度长度 
      n=(r1>=r2)?r1:r2; 
      return ((arg1*m-arg2*m)/m).toFixed(n); 
      },

  

 

 

 

posted @ 2019-10-15 14:37  爱吃火锅的土拨鼠  阅读(2107)  评论(0编辑  收藏  举报