mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Sunday, March 04, 2007

Python/파이썬] 반올림 함수, 정수로, 소수점 특정 자리에서; Round To Int


파이썬에서 실수 숫자를 반올림하려면 round(숫자) 또는 round(숫자, 자릿수) 라는 내장 함수를 사용합니다.

그런데 어떤 경우든 반환값은 실수형이기에, 정수형이 필요하면 int() 함수를 사용하여 정수화시켜야 합니다. 아래 예제와 같습니다.

업데이트: 파이썬 3.x에서는 int() 함수 없이도 정수가 되는군요.


업데이트: Python에서 반올림 함수 사용법 (파이썬 3.2용 소스)
#!/usr/bin/python
# -*- coding: cp949 -*-


################################################
## 실수를 정수로 반올림

result = round(3.455)
print (result)
# 출력 결과: 3
# 파이썬 2.x와 달리 정수로 출력됨

result = round(3.555)
print (result)
# 출력 결과: 4


print ( round(3.123456) )
# 출력 결과: 3


################################################
## 실수를 소수점 몇 째 자리에서 실수로 반올림하기
## 엑셀의 반올림 함수처럼, 다만 엑셀과는 좀 다른 값이 나올 수 있음
## 아래 rakijin 님의 질문에 대한 답변 참조

# 소수점 2째 자리에서 반올림
print ( round(3.123456, 2) )
# 출력 결과: 3.12


# 소수점 4째 자리에서 반올림
print ( round(3.123456, 4) )
# 출력 결과: 3.1235




Python에서 반올림 함수 사용 법 (파이썬 2.x용 소스)
파일명: example.py
#!/usr/bin/python
# -*- coding: cp949 -*-


################################################
## 실수를 정수로 반올림
## 그러나 결과는 여전히 실수 형식임

result = round(3.455)
print result
# 출력 결과: 3.0


result = round(3.555)
print result
# 출력 결과: 4.0


print round(3.123456)
# 출력 결과: 3.0




################################################
## 실수를 진짜 정수로 반올림

print int(round(3.123456))
# 출력 결과: 3




################################################
## 실수를 소수점 몇 째 자리에서 실수로 반올림하기
## 엑셀의 반올림 함수처럼

# 소수점 2째 자리에서 반올림
print round(3.123456, 2)
# 출력 결과: 3.12


# 소수점 4째 자리에서 반올림
print round(3.123456, 4)
# 출력 결과: 3.1235





tag: python
Python | 파이썬 프로그래밍

3 Comments:
At December 29, 2009 at 9:47 AM, Blogger jangwlee said...

Thanks for the post!

 
At December 26, 2011 at 9:48 AM, Blogger rakijin said...

질문하나만 해도 될까요? ^^; round(1.15,1) 이랑 round(1.25,1) 이랑 돌려보니까 각각 결과 값이 1.1 이랑 1.3 이 나오는데 이유가 뭔지 혹시 아시나요?

 
At December 26, 2011 at 12:44 PM, Blogger mwultong said...

http://docs.python.org/py3k/library/functions.html?highlight=round#round
위의 파이썬 도큐멘트 사이트에 보면 아래와 같은 설명이 있습니다.

The behavior of round() for floats can be surprising:
for example, round(2.675, 2) gives 2.67 instead of the expected 2.68.
This is not a bug:
it's a result of the fact that most decimal fractions can't be represented exactly as a float.
See Floating Point Arithmetic: Issues and Limitations for more information.

round() 함수에 실수를 넣으면 이상하게 작동하는 것으로 보일 수 있는데 버그는 아니라고 합니다.
예를 들어, round(2.675, 2) 가 2.68 대신에 2.67 을 반환합니다.
이것은 파이썬이, 소수를
컴퓨터가 인식할 수 있는 부동소수점(float)으로 정확하게 표현하지 못하기
때문이라고 합니다. (어설픈 번역일 수도 있음^^:)

 

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top