js 实现四舍五入&fixed方法异常处理

丶灬走出姿态 提交于 2019-12-01 08:02:14

JS四舍五入的函数:toFixed(n),n为要保留的小数位数,n取0~20。

问题:当n超过20的时候,JS会出错。

举例一:

var d = 10.005;
var f = d.toFixed(2);
alert(f);

输出结果:10.01

举例二:

var h = 0.007;
h.toFixed(2);
alert(h);

输出结果:0.00

解决方案:

(一)对JS中的Number类型的toFixed方法重写。

Number.prototype.toFixed = function(s) {  
   var changenum = (parseInt(this * Math.pow(10, s) + 0.5) / Math.pow(10, s)).toString();  
   index = changenum.indexOf(".");  
   if (index < 0 && s > 0) {  
      changenum = changenum + ".";  
      for (i = 0; i < s; i++) {  
          changenum = changenum + "0";  
      }  
    } else {  
      index = changenum.length - index;  
      for (i = 0; i < (s - index) + 1; i++) {  
          changenum = changenum + "0";  
      }  
    }  
    return changenum;  
}  

(二)利用Math.round函数:取四舍五入的整数部分

若number的小数部分大于等于0.5,返回值是大于number的最小整数;若number的小数部分小于0.5,返回值是小于等于number的最大整数;

//Number保留fractionDigits位小数
function Round4(number,fractionDigits){
   return Math.round(number*Math.pow(10,fractionDigits))/Math.pow(10,fractionDigits);
}
//函数调用
var money = 0.00542;
alert(round4(money,4));

输出结果:0.0054

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!