반응형
질문
부동 소수점을 동등성 비교하는 것은 반올림 및 정밀도 문제로 인해 약간 까다로운 것으로 잘 알려져 있습니다.
예를 들어: 부동 소수점 수 비교, 2012 버전
Python에서 이를 처리하는 권장 방법은 무엇인가요?
이를 위한 표준 라이브러리 함수는 어디에 있나요?
답변
Python 3.5은 math.isclose
및 cmath.isclose
함수를 PEP 485에서 설명한 대로 추가합니다.
이전 버전의 Python을 사용하는 경우, 해당 함수는 문서에서 제공됩니다.
def isclose(a, b, rel_tol=1e-09, abs_tol=0.0):
return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
rel_tol
은 상대적인 허용 오차이며, 두 인수의 크기 중 큰 값에 곱해집니다. 값이 커질수록 허용되는 차이도 커지며, 여전히 같은 값으로 간주됩니다.
abs_tol
은 모든 경우에 적용되는 절대 허용 오차입니다. 차이가 이러한 허용 오차 중 하나보다 작으면 값은 같은 것으로 간주됩니다.
반응형
댓글