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

posted @ 2024-04-10 15:36  技术白菜  阅读(969)  评论(0)    收藏  举报