2012-05-06 51 views
1

我的代码是: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

我可以做什么?

+3

您可以通过放弃对IE6的支持来修复它。这是一块扒起来的部分消化垃圾。 –

+0

'0.9.toFixed(0)'在IE6中返回'0'。什么应用如此重要以至于需要支持IE6? –

+0

@MarcB +1赞美'唯一 - 伟大 - 最好 - IE6。但是,这不是问题的答案。 –

回答

4

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

它执行四舍五入。在现代浏览器中输入相同的代码。 –

+0

'0.95.toFixed(1)'在IE6中返回'1.0'。 –

+0

'toFixed'的实现不正确。它返回一个数字,而它必须是一个字符串。 '0..toFixed(2)'必须返回'0.00',而不是'0'。 –