专注于.Net

享受编程的乐趣
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

JS四舍五入BUG解决

Posted on 2011-01-06 17:05  古道飘零客  阅读(2434)  评论(0编辑  收藏  举报

之前一直在用这个js自带的toFixed函数来进行四舍五入的操作,可是,在实际使用过程中却遇到了问题。

比如

 

  1. var money=0.00542;//0.006;   
  2. alert(Number(money).toFixed(2));   
  3. //0.00  

 

可以看出上面的结果是错误的,下面的方法通过巧妙的使用Math.round函数,完全可以解决数值很小时的精度问题。

var money=0.00542;//0.006;   

alert(Number(money).toFixed(2));   

  

function round2(number,fractionDigits){   

    with(Math){   

       return round(number*pow(10,fractionDigits))/pow(10,fractionDigits);   

   }   

}   

alert(round2(money,2));//0.01 

round 方法
返回与给出的数值表达式最接近的整数。

Math.round(number)

必选项 number 参数是要舍入到最接近整数的值。

说明
如果 number 的小数部分大于等于 0.5,返回值是大于 number 的最小整数。否则,round 返回小于等于 number 的最大整数。