>백엔드 개발 >파이썬 튜토리얼 >Python에서 거의 동일한 부동 소수점 숫자를 어떻게 정확하게 비교할 수 있습니까?

Python에서 거의 동일한 부동 소수점 숫자를 어떻게 정확하게 비교할 수 있습니까?

DDD
DDD원래의
2024-12-22 19:24:11721검색

How Can I Accurately Compare Floating-Point Numbers for Near-Equality in Python?

Python에서 거의 동일한지 부동 소수점 비교: 자세히 살펴보기

잠재적인 반올림 및 정밀도 문제로 인해 Python에서 부동 소수점의 정확한 동일성을 비교합니다. 파이썬은 어려울 수 있습니다. 이는 Bruce Dawson의 "Comparing Floating Point Numbers, 2012 Edition" 블로그 게시물에서 강조된 것처럼 잘 알려진 문제입니다. Python에서 이 문제를 효과적으로 해결하기 위해 여러 가지 접근 방식을 고려할 수 있습니다.

표준 라이브러리 함수

Python 3.5에서는 math.isclose() 및 cmath.isclose()를 도입했습니다. 플로트를 허용 수준과 비교하기 위해 특별히 설계된 기능입니다. 이 함수는 세 가지 인수를 허용합니다:

  • a 및 b: 비교할 부동 소수점 값
  • rel_tol(선택 사항): 더 큰 규모에 적용되는 요소인 상대 허용오차 허용되는 차이를 정의하는 a와 b
  • abs_tol(선택 사항): 최소 차이를 설정하는 절대 공차 임계값

a와 b의 절대 차이가 rel_tol * max(abs(a), abs(b)) 또는 abs_tol보다 작으면 값이 동일한 것으로 간주됩니다.

이전 Python 버전용 사용자 정의 함수

이전 Python 버전을 사용하는 경우 3.5에서는 문서에 제공된 다음 코드 조각을 기반으로 고유한 isclose() 함수를 구현할 수 있습니다.

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)

이 사용자 정의 함수는 표준 라이브러리 함수와 동일한 기능을 제공하므로 내에서 부동 소수점을 비교할 수 있습니다. 지정된 공차 범위.

위 내용은 Python에서 거의 동일한 부동 소수점 숫자를 어떻게 정확하게 비교할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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