<分区>
我注意到很多人在使用 javascript 中的 toFixed() 方法时遇到问题。
我自己有一个网站在 IE7 和 FireFox 4.x 中表现不佳。
我终于发现问题出在 toFixed() 方法上。它似乎在某些浏览器中返回一个字符串,而在其他浏览器中不返回 - 它似乎无法预测。
我决定只扩展原型(prototype)对象并创建我自己的方法,而不是每次使用此方法时都必须执行相同的 parseFloat/integer 操作。
使用此方法,您可以四舍五入到任意小数位,并且可以指定要使用的四舍五入类型:floor、ceil 或 null 以使用标准四舍五入(round)。
代码:
// a replacement for the toFixed() function in javascript
Number.prototype.trimNum = function(places,rounding){
var places,result,num = parseFloat(this),multiplier = Math.pow( 10,places );
try {
result = Math[rounding](num * multiplier) / multiplier;
} catch(e){
result = Math.round(num * multiplier) / multiplier;
}
return Number( result );
}
用法:
mynumbervar.trimNum(2,'floor')
使用 floor 进行舍入
mynumbervar.trimNum(2,'ceil')
使用 ceil 进行舍入
mynumbervar.trimNum(2)
使用 round 进行舍入
当然这里的数字“2”就是要保留的小数位数。
我已经在 PC 和 Mac 上的 IE、Safari、Chrome 和 FireFox 中对其进行了测试,它似乎对我来说运行良好。
我希望这可以帮助其他人避免我遇到的 toFixed() 问题......
有谁知道这有什么问题或有什么改进建议吗?