场景:前端将价钱318.04乘以100传递给服务端的时候,传给服务端的值精度会丢失
解决思路:
比如你传给后端要乘 100,也就是10的平方
现在你有一个小数 3.5 ,传给后端应该是 3.5100
,但也可以用3510的(2-1)次方
35就是3510的(2-0)次方
0.35就是3510的(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
}
网友评论