由于js处理浮点数有精度问题,所以在用toFixed保留小数位数的时候可能有不如我们预期的情况出现,比如
有时候这个是正常的四舍五入,但是有时候会出现如下情况
并不是我们预想中的四舍五入,所以我们就需要重写toFixed来修复这个问题,解决方法如下
/*重写toFixed解决四舍五入不准确问题*/
Number.prototype.toFixed = function(s)
{
var temp = 0.0000001;
if((this+"").indexOf("-") != -1){//
temp = -0.0000001;
}
var changenum=(Math.round(this * Math.pow( 10, s ) + temp)/ Math.pow( 10, s )).toString();
var 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(var i=0;i<(s-index)+1;i++){
changenum=changenum+"0";
}
}
return changenum;
}