>  기사  >  웹 프론트엔드  >  Precision_javascript 기술의 통합을 달성하기 위해 js toFixed() 메서드를 다시 작성합니다.

Precision_javascript 기술의 통합을 달성하기 위해 js toFixed() 메서드를 다시 작성합니다.

WBOY
WBOY원래의
2016-05-16 16:56:442849검색

js에서 toFix() 메서드를 사용해 본 사람이라면 이 메서드에 작은 버그가 있다는 것을 알아야 합니다.
IE와 FF에서는 소수점 이하 자릿수가 약간 다릅니다.
예를 들어 IE에서는 (0.005) toFix(2)=0.00이고, FF에서는 toFix(2)=0.01입니다.
이로 인해 데이터 차이가 발생합니다.
이 방법을 재정의하면 정밀도의 통일이 가능합니다.

코드 복사 코드는 다음과 같습니다.

Number.prototype.toFixed = function(s )
{
return (parseInt(this * Math.pow( 10, s ) 0.5)/ Math.pow( 10, s )).toString()
}

하지만 모든 브라우저에서 여전히 문제가 있습니다. String("0.050").toFix(2)=0.1
원래 소수점 이하 두 자리를 유지하려고 했으나 1이 되었습니다. 즉, 이 재정의의 유일한 toFixed()는 마지막 0을 자동으로 삭제합니다.
이 메서드를 추가로 처리해야 합니다.
코드 복사 코드는 다음과 같습니다.

Number.prototype.toFixed = function(s )
{
changenum=(parseInt(this * Math.pow( 10, s ) 0.5)/ Math.pow( 10, s )).toString()
index=changenum.indexOf(" .") ;
if(index0){
changenum=changenum ".";
for(i=0;ichangenum=changenum "0 ";
}

}else {
index=changenum.length-index;
for(i=0;i 변경 번호=변경 번호 "0"
}

}

변경 번호 반환
}
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.