最近发现JS当中toFixed()方法存在一些问题。采用toFixed()方法时,规则并不是标准的“四舍五入”。而且不同的浏览器会有不同的结果,所以为了满足正确的运算,需要对toFixed重写。在浏览了各大论坛后,有这么一种比较简单的方法:<script>Number.prototype.toFixed = function (exponent) {
return parseInt(this * Math.pow(10, exponent) + 0.5) / Math.pow(10, exponent);
}</script>原理就不解释了,来不及了。这个方法在正数情况下是可行的,但是对于负数还是会有偏差。例如:document.write((-0.050).toFixed(2));在Chrome下会输出为-0.04;我觉得问题出现在+0.5那里,但是不知道咋改。请大神指点一二。另外,如果有更好的办法,还请不吝赐教,谢谢。想了下……貌似这样可以的:Number.prototype.toFixed = function (exponent) {
if(this>0){ return parseInt(this * Math.pow(10, exponent) + 0.5) / Math.pow(10, exponent);
}else{ return parseInt(this * Math.pow(10, exponent) - 0.5) / Math.pow(10, exponent);
}
}那么……还有更好的办法嘛?
添加回答
举报
0/150
提交
取消