Sunday, March 04, 2007
Python/파이썬] 반올림 함수, 정수로, 소수점 특정 자리에서; Round To Int
파이썬에서 실수 숫자를 반올림하려면 round(숫자) 또는 round(숫자, 자릿수) 라는 내장 함수를 사용합니다.
그런데 어떤 경우든 반환값은 실수형이기에, 정수형이 필요하면 int() 함수를 사용하여 정수화시켜야 합니다. 아래 예제와 같습니다.
업데이트: 파이썬 3.x에서는 int() 함수 없이도 정수가 되는군요.
업데이트: Python에서 반올림 함수 사용법 (파이썬 3.2용 소스)
Python에서 반올림 함수 사용 법 (파이썬 2.x용 소스)
파일명: example.py
그런데 어떤 경우든 반환값은 실수형이기에, 정수형이 필요하면 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
# -*- 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
# -*- 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 | 파이썬 프로그래밍
Thanks for the post!
질문하나만 해도 될까요? ^^; round(1.15,1) 이랑 round(1.25,1) 이랑 돌려보니까 각각 결과 값이 1.1 이랑 1.3 이 나오는데 이유가 뭔지 혹시 아시나요?
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