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

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

DDD
풀어 주다: 2024-12-22 19:24:11
원래의
716명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿