>웹 프론트엔드 >JS 튜토리얼 >JavaScript의 부동 소수점 연산이 예상치 못한 결과를 생성하는 이유는 무엇이며, 이를 어떻게 해결할 수 있습니까?

JavaScript의 부동 소수점 연산이 예상치 못한 결과를 생성하는 이유는 무엇이며, 이를 어떻게 해결할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-01 08:14:11157검색

Why Does JavaScript's Floating-Point Arithmetic Produce Unexpected Results, and How Can I Solve This?

JavaScript의 부동 소수점 정밀도 문제 및 솔루션

JavaScript의 부동 소수점 연산은 때때로 예상치 못한 결과를 초래할 수 있습니다. 다음 코드를 고려해보세요.

function test() {
  var x = 0.1 * 0.2;
  document.write(x);
}
test();

예상된 0.02 대신 0.020000000000000004가 인쇄됩니다. 이러한 불일치는 십진수를 이진 부동 소수점 값으로 표현하는 데 내재된 부정확성에서 비롯됩니다.

Elegant Solutions

반올림 기능을 사용하지 않고 이 문제를 해결하려면 여러 가지 옵션이 있습니다:

  • JavaScript용 BigDecimal과 같은 특수한 십진 라이브러리를 사용하거나 정확한 소수 계산을 보장하는 DecimalJS.
  • 달러 대신 센트를 조작하여 특히 재무 계산의 경우 정수 연산으로 변환합니다. 그러나 이 접근 방식에는 추가 처리가 필요하고 단점이 있습니다.

실용적 고려 사항

첫 번째 옵션이 가장 높은 정확도를 제공하지만 지나치게 정확할 수 있습니다. 대부분의 사용 사례. 이러한 경우 결과를 표시할 때 고정된 소수 자릿수로 형식을 지정하는 것이 좋습니다.

부동 소수점 정밀도 제한은 JavaScript에만 국한되지 않는다는 점을 이해하는 것이 중요합니다. 이진 부동 소수점 연산을 사용하는 모든 프로그래밍 언어에 적용됩니다. 핵심은 애플리케이션의 정밀도 요구 사항에 따라 적절한 솔루션을 선택하는 것입니다.

요약하면 JavaScript에서 부동 소수점 정밀도를 처리하려면 필요한 정확성을 신중하게 고려하고 특정 사용 사례에 가장 적합한 접근 방식을 선택해야 합니다. .

위 내용은 JavaScript의 부동 소수점 연산이 예상치 못한 결과를 생성하는 이유는 무엇이며, 이를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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