본문 바로가기
Python/Python FAQ

Python 파이썬에서 거의 동일한지 비교하기 위한 가장 좋은 방법은 무엇인가요?, What is the best way to compare floats for almost-equality in Python?

by 베타코드 2023. 10. 16.
반응형

질문


부동 소수점을 동등성 비교하는 것은 반올림 및 정밀도 문제로 인해 약간 까다로운 것으로 잘 알려져 있습니다.

예를 들어: 부동 소수점 수 비교, 2012 버전

Python에서 이를 처리하는 권장 방법은 무엇인가요?

이를 위한 표준 라이브러리 함수는 어디에 있나요?


답변


Python 3.5은 math.isclosecmath.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은 모든 경우에 적용되는 절대 허용 오차입니다. 차이가 이러한 허용 오차 중 하나보다 작으면 값은 같은 것으로 간주됩니다.

반응형

댓글