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

本文介绍了一个用于修正浮点数运算精度的JavaScript函数fixMath。该函数通过调整参与运算的数值精度来确保运算结果的准确性,适用于加减乘除四种基本运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

/* 

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

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

 

 

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/xjdawu/archive/2007/09/27/1803204.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值