> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 부동 소수점 숫자를 소수점 이하 두 자리로 정확하게 반올림하려면 어떻게 해야 합니까?

Python에서 부동 소수점 숫자를 소수점 이하 두 자리로 정확하게 반올림하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2024-12-20 05:00:19
원래의
130명이 탐색했습니다.

How Can I Accurately Round Floating-Point Numbers to Two Decimal Places in Python?

부동 소수점을 소수점 두 자리로 제한

부동 소수점 숫자로 작업할 때 이 데이터 유형의 제한 사항을 고려하는 것이 중요합니다. 특히 부동 소수점 숫자는 특정 값을 정확히 나타내지 않아 반올림을 시도할 때 예상치 못한 결과가 발생할 수 있습니다.

문제: 부동 소수점 숫자를 소수점 이하 두 자리로 반올림하려고 하면 다음과 같은 문제가 발생할 수 있습니다. 다음 문제가 발생합니다.

>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999
로그인 후 복사

부동 소수점 숫자가 값을 2의 거듭제곱으로 나눈 정수로 저장하기 때문에 문제가 발생합니다. 이 표현은 모든 값을 정확하게 캡처하지 못할 수도 있습니다. Python의 부동 소수점 유형에서 사용되는 배정밀도 숫자의 경우 정밀도는 53비트(16자리)인 반면, 일반 부동 소수점 숫자의 정밀도는 24비트(8자리)입니다.

해결책:

부동 소수점을 반올림할 때 소수점 이하 두 자리만 표시하려면 다음과 같은 몇 가지 옵션을 사용하세요. 사용 가능:

  • 정수를 사용하고 값을 센트로 저장하세요. 달러를 저장하는 대신 값을 센트로 저장하고 100으로 나누어 달러로 변환하세요.
  • 소수점과 같은 고정 소수점 숫자 라이브러리 사용: 고정 소수점 숫자는 소수점 이하 자릿수를 더욱 정확하게 제어할 수 있습니다. places.

예:

>>> a = 13.946
>>> print("%.2f" % a)
13.95
>>> print("{:.2f}".format(a))
13.95
로그인 후 복사

round(a, 2)를 직접 사용하면 여전히 부동 소수점 정밀도 문제가 발생하지만 형식 지정에 유의하세요. %.2f 또는 {:.2f}가 포함된 문자열 값은 원하는 소수점 이하 두 자리 표현을 생성합니다.

위 내용은 Python에서 부동 소수점 숫자를 소수점 이하 두 자리로 정확하게 반올림하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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