@diyaner/ding
Version:
dingiyan常用ts/js工具
53 lines • 1.57 kB
JavaScript
;
/*
* @copyright: Huang Ding
* @Author: ding-cx
* @Date: 2021-04-10 09:23:58
* @LastEditors: ding
* @LastEditTime: 2022-09-12 16:09:27
* @Description: 解决js的数值计算精度问题的尝试工具库。
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.calc = void 0;
/**
*处理js精度计算器
*
* @export
* @param {number} n1 数值1
* @param {("+" | "-" | "/" | "*")} op 加减乘除
* @param {number} n2 数值2
* @param {number} [fix=2] 保留小数位
* @return {*} 结果
*/
function calc(n1, op, n2, fix = 2) {
// 先把数乘10的次方,增大,再计算。此处倍数可根据想要的结果的小数位决定。(要四舍五入的结果时,,应该加大倍数)
let fixNumber = Math.pow(10, fix);
// 默认不处理大于100 0000 一百万的数。直接按四舍五入返回。
const maxNum = 1000000;
fixNumber = n1 > maxNum || n2 > maxNum ? 1 : fixNumber;
let ret = 0;
switch (op) {
case "+":
ret = n1 * fixNumber + n2 * fixNumber;
break;
case "-":
ret = n1 * fixNumber - n2 * fixNumber;
break;
case "*":
ret = n1 * n2 * fixNumber;
break;
case "/":
ret = (n1 / n2) * fixNumber;
break;
}
// console.log(ret);
ret = Math.round(ret); //四舍五入取整
ret = ret / fixNumber;
// console.log(ret);
return ret;
}
exports.calc = calc;
exports.default = {
calc,
};
//# sourceMappingURL=numberFixed.js.map