1、经常遇到前端计算金额的时候出现精度误差问题,导致前后端计算的金额不一致导致校验过不去的情况,相信有不少人写过Math.floor(e*100)/100来实现保留2位小数,但是这么写就会出现上面的精度问题。怎么解决呢?这里使用的是decimal.js库。
2、npm安装decimal.js。
npm install decimal.js
3、引入。
import { Decimal } from 'decimal.js';
4、创建Decimal对象:可以使用Decimal构造函数创建一个Decimal对象,并传入要进行计算的数字。
const num1 = new Decimal(0.145);
const num2 = new Decimal('0.145');
5、执行精确计算:使用Decimal对象调用各种计算方法,以获得高精度的计算结果。
const sum = num1.plus(num2); // 加法
const difference = num1.minus(num2); // 减法
const product = num1.times(num2); // 乘法
const quotient = num1.dividedBy(num2); // 除法
// 还有其他常用的方法,如取模、幂运算等
6、获取计算结果:使用toNumber()方法将Decimal对象转换为JavaScript原生的Number类型,以便在Vue组件中使用。
const result = sum.toNumber();