// 精度丢失异常数据汇总
10.3950 * 3935.00 = 期望40904.33, 异常结果40904.32
7.3950 * 3835.00 = 期望28359.83, 异常结果28359.82
11.777 * 4215 = 期望49640.06, 异常结果49640.05
12.445 * 4005 = 期望49842.23,异常结果49842.22
3721*17.0480 = 期望63435.61,异常结果63435.60
3621*5.0060 = 期望18126.73,异常结果18126.72
vue项目中直接装插件
npm install bignumber.js
import {
BigNumber } from 'bignumber.js';
// +
export function add(a, b) {
a = BigNumber(a);
b = BigNumber(b);
return a.plus(b).toNumber(); //结果需要用toNumber转为普通数字
}
// -
export function minus(a, b) {
a = BigNumber(a);
b = BigNumber(b);
return a.minus(b).toNumber();
}
// *
export function mut(a, b) {
a = BigNumber(a);
b = BigNumber(b);
return a.multipliedBy(b).toNumber();
}
// /
export function dev(a, b) {
a = BigNumber(a);
b = BigNumber(b);
return a.dividedBy(b).toNumber();
}
界面中使用:
import {
add,
minus,
mut,
dev
} from '@/utils/common.js' //公共方法
row.amountStr = (this.mut(Number(row.salePriceStr), Number(row.weightStr))).toFixed(2)
toFixed也有精度丢失问题,直接main.js中改写toFixed方法
Number.prototype.toFixed = function(d) {
var s = this