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