문제

자바 스크립트를 사용하여 소수점 번호를 6 곳으로 반올림해야하지만 레거시 브라우저를 고려해야합니다. 숫자에 의존 할 수 없습니다

Toexponential, Tofixed 및 Toprecision의 큰 포획은 Firefox 버전 1.5까지 Mozilla에서 지원되지 않는 상당히 현대적인 구성이라는 것입니다 (IE는 버전 5.5 이후 방법을 지원했지만). 이러한 방법을 사용하는 것이 주로 안전하지만 이전 브라우저는 파손되므로 공개 프로그램을 작성하는 경우 이전 브라우저에 대한 이러한 방법에 대한 기능을 제공하기 위해 고유 한 프로토 타입을 제공하는 것이 좋습니다.

나는 같은 것을 사용하는 것을 고려하고 있습니다

Math.round(N*1000000)/1000000

이전 브라우저 에이 프로토 타입을 제공하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

이 시도:

if (!Number.prototype.toFixed)

    Number.prototype.toFixed = function(precision) {
        var power = Math.pow(10, precision || 0);
        return String(Math.round(this * power)/power);
    }

다른 팁

나는 Firefox 1.5와 IE 5가 더 이상 사용되지 않거나 매우 적은 양의 사람들에 의해 거의 사용되지 않는다고 생각합니다.
Netscape Navigator를 지원하는 코딩과 비슷합니다 ... :-)
다른 주요 브라우저 (Opera? Safari? Like ...)를 지원하지 않으면 웹 로그에 많은 레거시 브라우저 사용이 표시되면 이러한 방법 만 사용할 수 있습니다.
언젠가 우리는 계속 나아가 야합니다. ^_^

편집] Opera 9.50 및 Safari 3.1에서 잘 작동합니다.

javascript: var num = 3.1415926535897932384; alert(num.toFixed(7));

당신이 참조하는 기사는 1 년 반 전입니다. IT 업계에서 영원한 영원입니다. IE 사용자와 달리 Firefox 사용자는 종종 최신 버전으로 이동한다고 생각합니다.

에서 바이트 웹 사이트,이 기능은 Serge Llinsky의 것과 거의 동일합니다.

if (!num.toFixed) 
{
  Number.prototype.toFixed = function(precision) 
  {
     var num = (Math.round(this*Math.pow(10,precision))).toString();
     return num.substring(0,num.length-precision) + "." + 
            num.substring(num.length-precision, num.length);
  }
}

또 다른 옵션은 (불필요하게 문자열로 변환하지 않으며, (162.295)의 오해를 수정합니다.

Number.prototype._toFixed=Number.prototype.toFixed; //Preserves the current function
Number.prototype.toFixed=function(precision){
/* step 1 */ var a=this, pre=Math.pow(10,precision||0);
/* step 2 */ a*=pre; //currently number is 162295.499999
/* step 3 */ a = a._toFixed(2); //sets 2 more digits of precision creating 16230.00
/* step 4 */ a = Math.round(a);
/* step 5 */ a/=pre;
/* step 6 */ return a._toFixed(precision);
}
/*This last step corrects the number of digits from 162.3 ( which is what we get in
step 5 to the corrected 162.30. Without it we would get 162.3 */

편집 :이 특정 화신을 시도하면 this*=Math.pow(10, precision||0) 왼쪽 할당이 잘못된 오류를 만듭니다. 이 키워드에 변수를주었습니다 a. 내 기능을 닫으면 도움이 될 것입니다 ^_ ^;;

이 시도:

 Number.prototype.toFixed = function(precision) {
     var power = Math.pow(10, precision || 0);
     return String(Math.round(this * power)/power);
 }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top