- /*
- * 四则运算精度修正函数
- * m 数值1(number)
- * n 数值2(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, '-')