在項目中忽然發現的問題ui
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次方倍。spa
//減法的精度控制 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); },