-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
JavaScript 中有个 toFixed() 方法,可以把 Number 类型“四舍五入”为指定小数位数的数字字符串。
但在实际使用中,这个方法的行为有时会让人匪夷所思,例如下面的表达式:
0.045.toFixed(2);执行后,Chrome、Firefox 浏览器输出的并非预期的 0.05,而是 0.04,IE 则输出了预期的 0.05。由此可见这个方法的四舍五入是不稳定的,存在浏览器差异,这无疑会给我们的实际开发带来麻烦。如何解决?一般通用的方式就是重写这个方法,使其行为符合四舍五入规则。
var oldtoFixed = Number.prototype.toFixed;
Number.prototype.toFixed = function(digits) {
var length = (parseFloat(this) + '').replace(/^\d+\.?/, '').length;
var len = length > digits ? length : digits;
var number = Number(this) + Math.pow(10, -len-1);
return oldtoFixed.call(number, digits);
}Metadata
Metadata
Assignees
Labels
No labels