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

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

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

举例一:git

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

输出结果:10.01函数

举例二:this

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

输出结果:0.00prototype

解决方案:code

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

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函数:取四舍五入的整数部分it

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

//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

相关文章
相关标签/搜索