Python에서 숫자를 반올림하는 방법(round() 함수 및 소수)

Python에서 부동 소수점 숫자를 반올림하는 방법을 알아보세요. Banker의 반올림, 사용자 정의 소수점 정밀도 및 표시용 부동 소수점 형식을 이해합니다.

Editor에서 이 솔루션을 사용해 보세요.

개요

컴퓨터의 부동 소수점 연산은 이진 시스템이 소수점을 저장하는 방식(예: '0.1 + 0.2'가 '0.30000000000000004'로 평가됨)으로 인해 예상치 못한 정밀도 문제가 발생할 수 있습니다. 사용자에게 숫자를 렌더링하거나 측정항목을 준비할 때 숫자를 반올림하는 것이 일반적인 요구 사항입니다. Python은 이를 달성하기 위한 여러 가지 방법을 제공합니다.

기본 도구는 내장된 `round(number, ndigits)` 함수입니다. 숫자와 선택적 정밀도 개수가 필요합니다. `ndigits`가 생략되면 가장 가까운 정수로 반올림됩니다. `ndigits`가 제공되면 해당 소수점 이하 자릿수로 반올림됩니다.

Python의 `round()` 함수의 주요 속성은 "뱅커 반올림"(반올림을 짝수로)을 사용한다는 것입니다. 숫자가 정확히 두 정수 사이의 중간인 경우(예: `2.5` 또는 `3.5`) Python은 가장 가까운 *짝수* 숫자로 반올림합니다. 이는 `round(2.5)`가 `2`이고 `round(3.5)`가 `4`임을 의미합니다. 상향 편향을 방지하기 위해 대규모 데이터 세트에 대해 수학적으로 공정하지만, 정확한 재무 계산을 위해서는 'decimal' 모듈의 양자화 도구를 사용해야 합니다.

코드 및 실행 출력

이 스크립트는 내장된 round 함수, Banker의 반올림 예제 및 소수 모듈을 사용하여 부동 소수점을 반올림하는 방법을 보여줍니다.

from decimal import Decimal, ROUND_HALF_UP

val = 3.14159

# 1. Round to nearest integer
print("Nearest Integer:", round(val))

# 2. Round to 2 decimal places
print("Two decimals:", round(val, 2))

# 3. Banker's Rounding demonstration (rounds to nearest even)
print("round(2.5):", round(2.5)) # Nearest even is 2
print("round(3.5):", round(3.5)) # Nearest even is 4

# 4. Math rounding up (Traditional rounding) using decimal module
amount = Decimal("2.5")
rounded_up = amount.quantize(Decimal("1"), rounding=ROUND_HALF_UP)
print("Decimal ROUND_HALF_UP (2.5):", rounded_up)
터미널 출력
Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3

단계별 구현

  • 부동소수점을 가장 가까운 정수로 반올림하려면 내장된 round(number) 함수를 호출하세요.
  • 유지할 소수 자릿수를 지정하려면 두 번째 인수(예: round(num, 2))를 전달합니다.
  • 엄격한 재무 반올림 계산을 위해서는 ROUND_HALF_UP과 함께 10진수 모듈을 사용하세요.

자주 묻는 질문

Python에서 round(2.5)가 3 대신 2를 반환하는 이유는 무엇입니까?

Python은 숫자의 절반을 가장 가까운 짝수로 반올림하는 Banker's rounding을 사용합니다. 이렇게 하면 통계적 편향이 줄어듭니다(숫자의 절반을 반올림하면 항상 대규모 데이터 세트에서 약간의 상승 드리프트가 발생함).

숫자를 항상 위로 또는 항상 아래로 반올림하려면 어떻게 해야 합니까?

수학 모듈을 가져오고 math.ceil(x)를 사용하여 다음 정수로 반올림하거나 math.floor(x)를 사용하여 이전 정수로 반올림합니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.