问题环境:1、 在对数值0.005进行四舍五入保留2为数字时,在ie8会发现0.005.toFixed(2)=0.00
2、在toFixed使用小数点后为0的数字都被忽略, 没有保留0作为小数位
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;
}
转自:https://blog.csdn.net/kongjiea/article/details/42523891
js处理数字保留2位小数,强制保留2位小数不够补上.00
可参考:https://www.cnblogs.com/Aladingding/p/5091082.html
简单来说js使用原生toFixed(x)截取小数的时候会有误差,出现在比如var o = 0.3303;o.toFixed(3);//0.330 toFixed(x)本来也是一个获取四舍五入的截取方法,但这个bug实在不能忍,所以还是用Math.round(x)比较稳定