>웹 프론트엔드 >JS 튜토리얼 >JS_javascript 스킬의 toFixed() 메소드로 인해 발생하는 문제를 해결하는 방법

JS_javascript 스킬의 toFixed() 메소드로 인해 발생하는 문제를 해결하는 방법

WBOY
WBOY원래의
2016-05-16 17:48:041329검색

최근에 JS의 toFixed() 메소드에 몇 가지 문제가 있음을 발견했습니다. 기본 Number 객체의 프로토타입 객체에 toFixed() 메소드를 사용할 때 규칙은 소위 "반올림" 또는 "반올림"이 아닙니다. 5", 소위 ""6으로 반올림하고 5로 반올림하여 균등화"라고 하는데, Baidu Encyclopedia에 설명된 내용은 "4를 6으로 반올림하고 5로 반올림하여 균등하게"라는 것입니다. "4"는 4 이하인 경우 반올림, "6"은 6 이상인 경우 반올림을 의미합니다. 위의 "5"는 5 이후의 숫자를 의미합니다. 5 이후의 숫자가 있는 경우 5는 1로 반올림됩니다. 5 이후 유효한 숫자인 경우 두 가지 상황을 고려해야 합니다. ① 5 이전의 숫자가 홀수이면 5를 반올림합니다. 1을 입력합니다. ② 5 이전의 숫자는 짝수이므로 5는 반올림되지 않습니다. (0은 가장 작은 짝수입니다.) 바이두 백과사전에 언급된 몇몇 사례는 실제 상황에서는 사실이지만 과학적이지 않으며 모든 상황을 다룰 수는 없습니다.

테스트 브라우저: Diaosi 브라우저 IE6 및 고급 Diaosi 브라우저 IE78과 IE9, IE10, FF, Chrome, Opera 및 Safari를 포함한 모든 최신 주류 브라우저. (참고: IE10 같은 Firebug 개발 도구를 사용할 때, 호환되는 IE 하위 버전 브라우저 모드를 사용할 때의 테스트 결과는 네이티브 하위 버전 IE 브라우저를 사용할 때의 테스트 결과와 일치하지 않습니다.)

플로팅 끝에 point number ≤ 숫자가 4이거나 ≥ 6일 때 반올림에 대한 논란은 없지만 끝이 정확히 5일 때 매우 혼란스럽습니다.
요약: 우리 모두 알고 있듯이 IEEE754 숫자 형식을 따르는 언어의 부동 소수점 계산은 정밀도 손실로 인해 어려움을 겪습니다. 이 문제는 ES에서만 발생하는 것이 아니므로 특정 부동 소수점을 테스트하지 마십시오. 0.1 0.2와 같은 값;
해결책: Number.prototype.toFixed() 메서드를 재정의합니다.

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