vue中高精度小数问题(加减乘除方法封装)处理
很多项目都会涉及到计算,比如对账、财务等,对数据的计算要求比较高,先简单看个例子:
两 个 小 数 相 加 \color{#ed1941}{两个小数相加}两个小数相加

正常来说不应该是0.3吗?为什么会有这么多位数?
两 数 相 减

不应该是0.2吗?
从以上例子来看计算的结果并不是很准确,所以可以用bigNumber来解决以上问题。
bigNumber
BigNumber.js是一个用于精度计算的js库。
API
地址:https://mikemcl.github.io/bignumber.js/
安装
npm install bignumber.js --S
1
使用
引入
import { BigNumber } from 'bignumber.js';
1
例子
加 \color{#009ad6}{加}加
add(a, b) {
a = BigNumber(a);
b = BigNumber(b);
return a.plus(b).toNumber(); //结果需要用toNumber转为普通数字
}
//调用
add(0.1,0.2) //0.3
1
2
3
4
5
6
7
减 \color{#009ad6}{减}减
minus(a, b) {
a = BigNumber(a);
b = BigNumber(b);
return a.minus(b).toNumber();
},
minus(0.3,0.1); //0.2
1
2
3
4
5
6
7
乘 \color{#009ad6}{乘}乘
mutiply(a, b) {
a = BigNumber(a);
b = BigNumber(b);
return a.multipliedBy(b).toNumber();
}
mutiply(3,0.6); //1.8
1
2
3
4
5
6
7
除 \color{#009ad6}{除}除
devide(a, b) {
a = BigNumber(a);
b = BigNumber(b);
return a.dividedBy(b).toNumber();
}
devide(355,113) // 3.1415929203539825
1
2
3
4
5
6
多 个 数 求 和 \color{#145b7d}{多个数求和}多个数求和
multiAdd(...params) {
let data = BigNumber(0);
for (let index = 0; index < params.length; index++) {
const element = BigNumber(params[index]);
data = data.plus(element);
}
return data.toNumber();
}
multiAdd(1,2,3,4,5); //15

浙公网安备 33010602011771号