不仅仅在js 中,其他语言中 浮点型的运算都会出现 丢失精度问题,没有遇到过的自己去实验一下
解决办法 --- decimal.js
import Decimal from "decimal.js"; // 导入decimal
dealWithClientFreightPrice() {
if (!this.dataOrgManager) {
return;
}
if (this.dataOrgManager.settleTradingConfigUnitCode == '%') {
let num = Decimal(this.dataOrgManager.settleTradingConfigValue).div(100).toNumber();
let num1 = Decimal(1).sub(num).toNumber();
let finNum = Decimal(this.domainObject.clientFreightPrice).mul(Decimal(num1)).toNumber();
this.domainObject.driverPrice = Math.floor(finNum * 100) / 100;
} else if (this.dataOrgManager.settleTradingConfigUnitCode == 'yuan') {
let finNum = this.domainObject.clientFreightPrice - this.dataOrgManager.settleTradingConfigValue;
this.domainObject.driverPrice = Math.floor(finNum * 100) / 100;
}
},
上述是我在上模中使用的案列(主要是计算 7%,百分比的计算)
基础用法
ps:需要先将值变成 Decimal 处理的对象,然后再做相应的 + - * / ,链式操作
1.加
let a = 0.1;
let b=0.2;
Decimal(a).add(Decimal(b)).toNumber();
2.减
Decimal(a).sub(Decimal(b)).toNumber();
3.乘法
Decimal(a).mul(Decimal(b)).toNumber();
4.除法
Decimal(a).div(Decimal(b)).toNumber();
参考文章 https://www.cnblogs.com/zhongweiv/p/nodejs_decimal.html