本文介绍一个用于修正JavaScript中加减乘除运算精度丢失问题的自定义函数fixMath。该函数通过识别操作数的小数位数,动态调整计算精度,分别处理加减乘除四种运算,确保返回结果符合预期精度要求,适用于对数值计算准确性有较高要求的场景。
JavaScript 四则运算精度修正函数实现
以下是该函数的具体代码实现:
具体代码如下:
/*
* 用于修正四则运算中的精度问题函数
* m 第一个数值参数,类型为 number
* n 第二个数值参数,类型为 number
* op 运算操作符,类型为 string
*/
function fixMath(m, n, op) {
var a = (m + " ");
var b = (n + " ");
var x = 1;
var y = 1;
var c = 1;
if (a.indexOf(".") > 0) {
x = Math.pow(10, a.length - a.indexOf(".") - 1);
}
if (b.indexOf(".") > 0) {
y = Math.pow(10, b.length - b.indexOf(".") - 1);
}
switch (op)
{
case '+ ':
case '- ':
c = Math.max(x, y);
m = Math.round(m * c);
n = Math.round(n * c);
break;
case '* ':
c = x * y
m = Math.round(m * x);
n = Math.round(n * y);
break;
case '/ ':
c = Math.max(x, y);
m = Math.round(m * c);
n = Math.round(n * c);
c = 1;
break;
}
return eval("(" + m + op + n + ")/ " + c);
} 函数调用示例
函数的使用示例如下:
调用示例代码如下:
fixMath(2.3, 1.9, '* ')
fixMath(1.98, 1.9, '- ')
fixMath(83.50, 74.15, '- ')