Python에서 부동 소수점 오류 방지
프로그래밍 영역에서는 부동 소수점 계산의 복잡성을 이해하는 것이 중요합니다. 제대로 처리하지 않으면 예상치 못한 오류가 발생합니다. 이 기사에서는 부동 소수점 연산의 함정을 강조하는 실용적인 예를 살펴봅니다.
제곱근 문제
제곱근을 근사화하도록 설계된 Python 함수를 고려해보세요.
<code class="python">def sqrt(num): root = 0.0 while root * root < num: root += 0.01 return root
이 기능을 사용하면 놀라운 결과가 나타납니다.
>>> sqrt(4) 2.0000000000000013 >>> sqrt(9) 3.00999999999998</code>
부동 소수점 산술은 이러한 부정확성을 설명합니다. 분수를 표현할 때 컴퓨터는 분수와 지수의 조합으로 분수를 저장합니다. 이 표현의 제한으로 인해 특정 십진수 값을 정확하게 표현할 수 없어 근사치가 나옵니다.
오류 이해
위 코드에서 문제는 루트 값을 증가시키는 데 사용되는 증분입니다. 0.01이라는 값을 추가하려고 하지만 부동 소수점 레지스터에 저장된 실제 값은 약간 다르며 0.01보다 큽니다.
오류 해결
피하려면 부동 소수점 오류가 있는 경우 다양한 접근 방식을 사용할 수 있습니다.
<code class="python">from decimal import Decimal as D def sqrt(num): root = D(0) while root * root < num: root += D("0.01") return root
Now, the function returns precise results, such as: ``` >>> sqrt(4) Decimal('2.00') >>> sqrt(9) Decimal('3.00') ``` </code>
위 내용은 Python에서 부동 소수점 오류를 완화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!