>백엔드 개발 >파이썬 튜토리얼 >Python의 부동 소수점 숫자가 예기치 않은 반올림 오류를 생성하는 이유는 무엇입니까?

Python의 부동 소수점 숫자가 예기치 않은 반올림 오류를 생성하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-11 08:15:09471검색

Why Do Python's Floating-Point Numbers Produce Unexpected Rounding Errors?

Python 부동 소수점 반올림 오류

Python의 부동 소수점 숫자는 예상치 못한 반올림 오류로 이어질 수 있습니다. 부동 소수점 연산의 한계를 이해하는 것이 중요합니다.

제공된 코드에서 오류는 일부 숫자를 부동 소수점 숫자로 정확하게 표현할 수 없다는 사실에서 비롯됩니다. 정수를 부동 소수점으로 변환하고 100으로 나누면 결과 숫자가 근사화됩니다. 이 경우 0.29와 0.58에 대한 근사치는 각각 0.28과 0.57에 가까워 파일 이름이 동일했습니다.

이 동작은 거듭제곱을 사용하여 정확하게 표현할 수 없는 특정 숫자에만 영향을 미치기 때문에 체계적이지 않습니다. 둘 중. 이를 입증하기 위해 다음 Python 스크립트가 생성되었습니다.

import sys

n = int(sys.argv[1])

for i in range(0, n + 1):
  a = int(100 * (float(i) / 100))
  if i != a: print i, a

다양한 n 값에 대해 이 스크립트를 실행하면 반올림 오류가 특정 패턴을 따르지 않는다는 것을 알 수 있습니다.

이 문제는 부동 소수점 연산의 특성에 있습니다. 자세한 내용은 "모든 컴퓨터 과학자가 부동 소수점 연산에 대해 알아야 할 사항"을 참조하세요. 이 기사는 부동 소수점 연산의 복잡성과 한계에 대한 귀중한 통찰력을 제공합니다.

위 내용은 Python의 부동 소수점 숫자가 예기치 않은 반올림 오류를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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