大多数同学遇到的问题—数字运算导致精度丢失。于是系统性的总结下面几种方法,希望能帮助到小伙伴。
- 方法1:使用 toFixed() 方法:将数字转换为固定小数位数的形式,可以控制精度。
let a = 0.1 + 0.2; // 结果为 0.3
let b = a.toFixed(2); // 结果为 "0.30"
- 方法2:把小数乘以倍数变成整数计算,
let a = 0.1,b=0.2;
let c = a + b // 结果0.30000000000000004
((a*100)+(b*100))/100 //结果0.3
- 方法3:vue2项目使用插件number-precision,安装命令 npm install number-precision --save
注意:此方法只适用vue2
import NP from 'number-precision'
let a=0.1,b=0.2;
NP.plus(a,b) // plus表示加法 其他运算看文档 https://www.npmjs.com/package/number-precision
- 方法4:使用插件decimal.js,安装命令 npm install decimal.js
import Decimal from 'decimal.js';
const a = new Decimal('1.2345');
const b = new Decimal('2.3456');
// 加法
const sum = a.add(b);
console.log(sum.toString()); // 输出 "3.5791"
// 减法
const difference = a.sub(b);
console.log(difference.toString()); // 输出 "-1.0101"
// 乘法
const product = a.mul(b);
console.log(product.toString()); // 输出 "2.9068"
// 除法
const quotient = a.div(b);
console.log(quotient.toString()); // 输出 "0.5437"
// 取模
const remainder = a.mod(b);
console.log(remainder.toString()); // 输出 "0.0101"
// 求商
const quotient2 = a.div(b, true);
console.log(quotient2.toString()); // 输出 "0.5437"