2012-05-06 2 views
1

내 코드는 다음과 같습니다Javascript toFixed IE6의 버그?

var m=0.00542; 
alert(m.toFixed(3)); 
alert(m.toFixed(2)); 

예상되는 결과는 다음과 같습니다 0.01

하지만 IE6에서 0.005, 결과는 다음과 같습니다 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'이 아니라 '0.00'을 반환해야합니다. –