문제는 피연산자가 정수형이지만 실수형 결과를 기대한다는 사실 때문에 발생한다. 따라서 도중에 정수에서 실수로 형을 변환해야 한다. 파이썬에서는 형을 변환하기 위해 명시적인 방법이나 암시적인 방법을 사용한다.
명시적 형 변환 먼저 어떤 형의 인수를 받아 다른 형의 객체를 반환하는 함수를 사용하는 방법이 있다. 우리는 문자열에서 정수나 실수로, 그리고 숫자를 문자열로 변환하기 위해 이미 int()
, float()
, str()
내장 함수를 사용해왔다. 이와 같이 문자열과 숫자 간의 형 변환을 가장 흔히 볼 수 있지만, [표 1.2.17]에서 보는 것처럼 정수에서 실수로, 실수에서 정수로 변환하기 위해서도 사용할 수 있다. 예를 들어 int(x)
나 int(round(x))
를 이용해 실수를 정수로, float(x)
를 이용해 정수를 실수로 변환할 수 있다. 따라서 float(1 + 2 + 3 + 4) / float(4)
는 우리가 원하는 대로 파이썬 3와 파이썬 2에서 모두 2.5
로 평가된다.
▼ 표 1.2.17 내장된 형 변환 함수들의 API
함수 |
설명 |
str(x) |
x 객체를 문자열로 변환 |
int(x) |
문자열 x를 정수로 변환하거나, 실수 x를 버림하여 정수로 변환 |
float(x) |
문자열이나 정수 x를 실수로 변환 |
round(x) |
숫자 x에 가장 가까운 정수로 변환 |
파이썬 2 주의 | round(x)
가 파이썬 3에서는 정수를, 파이썬 2에서는 실수를 반환한다. 이 책에서는 실수 x
에 가장 가까운 정수로 변환하기 위해 언제나 int(round(x))
표현식을 사용하므로, 이 코드는 파이썬 3와 파이썬 2에서 모두 제대로 실행된다.