处理价钱精度丢失问题

场景:前端将价钱318.04乘以100传递给服务端的时候,传给服务端的值精度会丢失

解决思路

比如你传给后端要乘 100,也就是10的平方
现在你有一个小数 3.5 ,传给后端应该是 3.5100
,但也可以用35
10的(2-1)次方

35就是3510的(2-0)次方
0.35就是35
10的(2-2)次方

就是把小数点拿掉,用整数去乘

整数相乘是不会有精度问题的

方法
this.refundPendData.actualRefundAmountwei为传给服务价钱字段
Math.pow(底数,几次方)
保持小数点后两位数,那么就是2次方

 var changeRes = this.dealFloatNum(String(this.refundPendData.actualRefundAmount));
this.refundPendData.actualRefundAmount = changeRes.newnum * Math.pow(10, 2 - changeRes.offset);
console.log('处理退款价格精度丢失问题', this.refundPendData.actualRefundAmount);


// 处理价钱精度丢失方法
dealFloatNum(strnum) {
   var arr = strnum.split('.')
     if (arr.length > 1) {
        intnumArr.newnum = parseInt(strnum.replace(/\./, ''))
        intnumArr.offset = arr[1].length
     }
    return intnumArr
 }

推荐阅读更多精彩内容