js中计算失去精度问题

不仅仅在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

你可能感兴趣的:(js中计算失去精度问题)