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