label-print-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
141 lines (139 loc) • 4.4 kB
JavaScript
const MathCalc = {
toFixed(x, scale = 2) {
return parseFloat(x.toFixed(scale));
},
ceil(x, scale = 2) {
let pow = Math.pow(10, scale);
return Math.ceil(x * pow) / pow;
},
/**
** 加法函数,用来得到精确的加法结果
** 说明:javascript 的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
** 调用:sum(arg1,arg2)
** 返回值:arg1 加上 arg2 的精确结果
**/
sumScale(arg1 = 0, arg2 = 0, scale = 2) {
return this.sum(this.toFixed(arg1, scale), this.toFixed(arg2, scale));
},
sum(arg1 = 0, arg2 = 0) {
let r1, r2;
try {
r1 = arg1.toString().split(".")[1].length;
} catch (e) {
r1 = 0;
}
try {
r2 = arg2.toString().split(".")[1].length;
} catch (e) {
r2 = 0;
}
const c = Math.abs(r1 - r2);
const m = Math.pow(10, Math.max(r1, r2));
if (c > 0) {
const cm = Math.pow(10, c);
if (r1 > r2) {
arg1 = Number(arg1.toString().replace(".", ""));
arg2 = Number(arg2.toString().replace(".", "")) * cm;
} else {
arg1 = Number(arg1.toString().replace(".", "")) * cm;
arg2 = Number(arg2.toString().replace(".", ""));
}
} else {
arg1 = Number(arg1.toString().replace(".", ""));
arg2 = Number(arg2.toString().replace(".", ""));
}
return (arg1 + arg2) / m;
},
/**
** 减法函数,用来得到精确的减法结果
** 说明:javascript 的减法结果会有误差,在两个浮点 g2)会比较明显。这个函数返回较为精确的减法结果。
** 调用:sub(arg1,arg2)
** 返回值:arg1 加上 arg2 的精确结果
**/
subScale(arg1 = 0, arg2 = 0, scale = 2) {
return this.sub(this.toFixed(arg1, scale), this.toFixed(arg2, scale));
},
sub(arg1, arg2) {
let r1, r2;
try {
r1 = arg1.toString().split(".")[1].length;
} catch (e) {
r1 = 0;
}
try {
r2 = arg2.toString().split(".")[1].length;
} catch (e) {
r2 = 0;
}
const c = Math.abs(r1 - r2);
const m = Math.pow(10, Math.max(r1, r2));
if (c > 0) {
const cm = Math.pow(10, c);
if (r1 > r2) {
arg1 = Number(arg1.toString().replace(".", ""));
arg2 = Number(arg2.toString().replace(".", "")) * cm;
} else {
arg1 = Number(arg1.toString().replace(".", "")) * cm;
arg2 = Number(arg2.toString().replace(".", ""));
}
} else {
arg1 = Number(arg1.toString().replace(".", ""));
arg2 = Number(arg2.toString().replace(".", ""));
}
return (arg1 - arg2) / m;
},
/**
** 乘法函数,用来得到精确的乘法结果
** 说明:javascript 的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
** 调用:mul(arg1,arg2)
** 返回值:arg1 乘以 arg2 的精确结果
**/
mul(arg1, arg2, scale = 2) {
let m = 0;
const s1 = arg1.toString();
const s2 = arg2.toString();
try {
m += s1.split(".")[1].length;
} catch (e) {
}
try {
m += s2.split(".")[1].length;
} catch (e) {
}
return this.toFixed(Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m), scale);
},
/**
** 除法函数,用来得到精确的除法结果
** 说明:javascript 的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
** 调用:div(arg1,arg2)
** 返回值:arg1 除以 arg2 的精确结果
**/
div(arg1, arg2, scale = 2) {
let t1 = 0, t2 = 0;
try {
t1 = arg1.toString().split(".")[1].length;
} catch (e) {
}
try {
t2 = arg2.toString().split(".")[1].length;
} catch (e) {
}
const r1 = Number(arg1.toString().replace(".", ""));
const r2 = Number(arg2.toString().replace(".", ""));
return this.toFixed(r1 / r2 * Math.pow(10, t2 - t1), scale);
},
limitMin(val, min) {
return val < min ? min : val;
},
isNumber(value) {
return !isNaN(value);
}
};
function _default(val, _default2) {
return val ? val : _default2;
}
function _defaultNum(val, _default2) {
return !val || isNaN(val) ? _default2 : val;
}
export { _default, _defaultNum, MathCalc as default };
//# sourceMappingURL=numberUtil.mjs.map