1、函数封装
// 浮点数加法运算
function floatAdd(arg1, arg2) {
var r1, r2, m;
try {
r1 = arg1.toString().split(".")[1].length;
} catch (e) {
r1 = 0;
}
try {
r2 = arg2.toString().split(".")[1].length;
} catch (e) {
r2 = 0;
}
m = Math.pow(10, Math.max(r1, r2));
return (arg1 * m + arg2 * m) / m;
}
// 浮点数减法运算
function floatSub(arg1, arg2) {
var r1, r2, m, n;
try {
r1 = arg1.toString().split(".")[1].length;
} catch (e) {
r1 = 0
}
try {
r2 = arg2.toString().split(".")[1].length;
} catch (e) {
r2 = 0
}
m = Math.pow(10, Math.max(r1, r2));
n = (r1 >= r2) ? r1 : r2;
return ((arg1 * m - arg2 * m) / m).toFixed(n);
}
// 浮点数乘法运算
function floatMul(arg1, arg2) {
var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
try {
m += s1.split(".")[1].length;
} catch (e) {
}
try {
m += s2.split(".")[1].length;
} catch (e) {
}
return Number(s1.replace(".", "")) * Number(s2.replace(".", ""))
/ Math.pow(10, m);
}
// 浮点数除法运算
function floatDiv(arg1, arg2) {
var t1 = 0, t2 = 0, r1, r2;
try {
t1 = arg1.toString().split(".")[1].length;
} catch (e) {
}
try {
t2 = arg2.toString().split(".")[1].length;
} catch (e) {
}
with (Math) {
r1 = Number(arg1.toString().replace(".", ""));
r2 = Number(arg2.toString().replace(".", ""));
return (r1 / r2) * pow(10, t2 - t1);
}
}
// 设置数值精度
function setScale(value, scale, roundingMode) {
if (roundingMode.toLowerCase() == "roundhalfup") {
return (Math.round(value * Math.pow(10, scale)) / Math.pow(10, scale))
.toFixed(scale);
} else if (roundingMode.toLowerCase() == "roundup") {
return (Math.ceil(value * Math.pow(10, scale)) / Math.pow(10, scale))
.toFixed(scale);
} else {
return (Math.floor(value * Math.pow(10, scale)) / Math.pow(10, scale))
.toFixed(scale);
}
}
使用方法:
setScale(value, scale, roundingMode) //设置精度 参数1、设置的值,2、保留几位小数,3、选择四舍五入还是向上取,或者向下取
floatAdd(arg1, arg2) //浮点数加法
floatSub(arg1, arg2) //浮点数减法
floatMul(arg1, arg2) //浮点数乘法
floatDiv(arg1, arg2) //浮点数除法
2、使用big.js(https://www.npmjs.com/package/big.js)
1、npm install --save big.js
2、import Big from 'big.js'
使用big.js运算的返回的是一个big实例,可链式调用,最终结果,使用toString()方法转为字符串进行页面渲染。
示例:(加减乘除的基本运用)
let a = new Big(0.2);
let b = new Big(0.1);
a.add(b).toString() //0.3
a.sub(b).toString() //0.1
a.mul(b).toString() //0.02
a.div(b).toString() //2