js中数字计算精度(经测试,比较好)

来源:互联网 发布:约会吧软件怎么样 编辑:程序博客网 时间:2024/06/03 16:13

 

------------------------------

/* 

* 数值简单运算精度修正函数

* 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, '-') 

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xjdawu/archive/2007/09/27/1803204.aspx

原创粉丝点击