在项目中突然发现的问题
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);
},
知识兔