본문 바로가기
dev/python

[python] 파이썬 반올림 (round)

by 최연탄 2023. 6. 13.
728x90
반응형

참고: https://www.programiz.com/python-programming/methods/built-in/round

이 포스트에서는 파이썬의 round() 함수를 예제와 함께 알아보겠습니다. round() 함수는 지정된 소수점 자릿수에서 반올림한 값을 리턴합니다.

number = 13.46
rounded_number = round(number)
print(rounded_number)

round() 문법

round() 함수의 문법은 다음과 같습니다:

round(number, ndigits)

round() 매개변수

round() 함수는 두 개의 매개변수를 받습니다:

number - 반올림 할 숫자

ndigits (optional) - 소수점 몇 째 자리에서 반올림 할지 지정, 기본 값: 0

round() 함수 리턴 값

round() 함수는 다음을 리턴합니다:

  • ndigits를 입력 안한 경우 주어진 숫자에 가장 가까운 정수
  • ndisits가 있는 경우 ndigits 자리에서 반올림한 숫자

예제 1: 파이썬 round() 사용 방법

print(round(10))

print(round(10.7))

print(round(5.5))

예제 2: 소수점 자릿수에서 반올림

print(round(2.665, 2))
print(round(2.675, 2))

float에 대한 round() 함수의 동작은 이상해 보일 수 있습니다. round(2.675, 2)는 우리가 예상한 값 2.68 대신 2.67을 리턴했습니다. 하지만 이는 버그가 아닙니다. 이는 소수점 값이 정확하게 실수로 표현될 수 없어서 발생한 결과입니다.

반올림 동작을 하기 위해 10진수 2.675를 이진수 부동 소수점으로 변환하면 이진수 근사 값으로 변환되며 이 값에 해당하는 정확한 10진수 값은 다음과 같습니다.

2.67499999999999982236431605997495353221893310546875

이러한 동작으로 인해 2.67로 반올림 되었습니다.

이러한 상황에서 정밀도가 필요한 경우라면 부동 소수점 산술용으로 설계된 10진수 모듈을 사용해야 합니다.

from decimal import Decimal

num = 2.675
print(round(num, 2))

num = Decimal('2.675')
print(round(num, 2))

// 2.67
// 2.68

관련 글

파이썬 메시지 출력 (print)

파이썬 부동 소수점 (float)

반응형

댓글