Javascript来修复IE6中的错误?

Javascript来修复IE6中的错误?,javascript,internet-explorer-6,Javascript,Internet Explorer 6,我的代码是: var m=0.00542; alert(m.toFixed(3)); alert(m.toFixed(2)); 预期结果为:0.005 0.01 但在ie6中,结果是:0.005 0.00 我能做什么?IE6坏了。甚至谷歌也不再支持它了。不过,这个特殊问题很容易解决 要修补Number.toFixed(),请定义 Number.prototype.toFixed = function(n) { var power = Math.pow(10, n); va

我的代码是:

var m=0.00542;
alert(m.toFixed(3));  
alert(m.toFixed(2)); 
预期结果为:0.005 0.01

但在ie6中,结果是:0.005 0.00


我能做什么?

IE6坏了。甚至谷歌也不再支持它了。不过,这个特殊问题很容易解决

要修补
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;
};
Number.prototype.toFixed=函数(n){
无功功率=数学功率(10,n);
var fixed=(Math.round(this*power)/power.toString();
如果(n==0)返回固定值;
if(fixed.indexOf('.')<0)fixed+=';
var padding=n+1-(fixed.length-fixed.indexOf('.');
对于(变量i=0;i

您的代码现在应该生成预期的输出。

IE6已损坏。甚至谷歌也不再支持它了。不过,这个特殊问题很容易解决

要修补
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;
};
Number.prototype.toFixed=函数(n){
无功功率=数学功率(10,n);
var fixed=(Math.round(this*power)/power.toString();
如果(n==0)返回固定值;
if(fixed.indexOf('.')<0)fixed+=';
var padding=n+1-(fixed.length-fixed.indexOf('.');
对于(变量i=0;i

您的代码现在应该生成预期的输出。

您可以通过放弃对IE6的支持来修复它。它是一块被部分消化的垃圾。
0.9.toFixed(0)
在IE6中返回
0
。什么应用程序如此重要以至于需要支持IE6?@MarcB+1“赞扬”了唯一的—伟大的—最好的—IE6。但是,这不是问题的答案。@parth:。。。这就是为什么它是一个评论?很好的回答…呃,评论?呵呵,你可以通过放弃对IE6的支持来修复它。它是一块被部分消化的垃圾。
0.9.toFixed(0)
在IE6中返回
0
。什么应用程序如此重要以至于需要支持IE6?@MarcB+1“赞扬”了唯一的—伟大的—最好的—IE6。但是,这不是问题的答案。@parth:。。。这就是为什么它是一个评论?很好的回答…呃,评论?heheIt执行舍入操作。在现代浏览器中输入相同的代码。
0.95.toFixed(1)
在IE6中返回
1.0
toFixed
的实现不正确。它返回一个数字,而它必须是一个字符串
0..toFixed(2)
必须返回
0.00
,而不是
0
@RobW:不是我的日子。我想现在是对的。还是我又错过了什么?看起来好多了。声明必须为0-20范围之外的值抛出一个值(实现可能会有所不同)。另一件事:我建议在覆盖它之前测试实现是否已损坏:
if(0.9.toFixed(0)!='1'){Number.prototype.toFixed=…}
。它确实执行舍入。在现代浏览器中输入相同的代码。
0.95.toFixed(1)
在IE6中返回
1.0
toFixed
的实现不正确。它返回一个数字,而它必须是一个字符串
0..toFixed(2)
必须返回
0.00
,而不是
0
@RobW:不是我的日子。我想现在是对的。还是我又错过了什么?看起来好多了。声明必须为0-20范围之外的值抛出一个值(实现可能会有所不同)。另一件事:我建议在覆盖它之前测试实现是否已损坏:
if(0.9.toFixed(0)!='1'){Number.prototype.toFixed=…}