我的代码是:Javascript to fix bug in IE6?
var m=0.00542;
alert(m.toFixed(3));
alert(m.toFixed(2));
预期的结果是:0.005 0.01
但在IE6,结果是:0.005 0.00
我可以做什么?
我的代码是:Javascript to fix bug in IE6?
var m=0.00542;
alert(m.toFixed(3));
alert(m.toFixed(2));
预期的结果是:0.005 0.01
但在IE6,结果是:0.005 0.00
我可以做什么?
IE6坏了。甚至Google也不支持它。这个特别的问题很容易解决。
要修补Number.toFixed()
,定义
Number.prototype.toFixed = function(n) {
var power = Math.pow(10, n);
var fixed = (Math.round(this * power)/power).toString();
if(n == 0) return fixed;
if(fixed.indexOf('.') < 0) fixed += '.';
var padding = n + 1 - (fixed.length - fixed.indexOf('.'));
for(var i = 0; i < padding; i++) fixed += '0';
return fixed;
};
现在您的代码应产生预期的输出。
它执行四舍五入。在现代浏览器中输入相同的代码。 –
'0.95.toFixed(1)'在IE6中返回'1.0'。 –
'toFixed'的实现不正确。它返回一个数字,而它必须是一个字符串。 '0..toFixed(2)'必须返回'0.00',而不是'0'。 –
您可以通过放弃对IE6的支持来修复它。这是一块扒起来的部分消化垃圾。 –
'0.9.toFixed(0)'在IE6中返回'0'。什么应用如此重要以至于需要支持IE6? –
@MarcB +1赞美'唯一 - 伟大 - 最好 - IE6。但是,这不是问题的答案。 –