[python] /, // 차이
- 1 min파이썬 /과 //의 차이
파이썬에서 ‘/’ 와 ‘//’는 기본적으로 둘 다 나누기 연산이다.
단, ‘/’의 경우는 소숫점이 있을경우 float형으로 소숫점 아래까지 전부 반환하고,
’//’ 의 경우는 소숫점 아래를 버리고 int형을 반환한다.
다음은 python3 예제이다.
>>> 5 / 2
2.5
>>> 5 // 2
2
설명한대로 문제없이 정상 작동한다.
5 / 2
의 경우, int끼리 나누었지만 결과는 float으로 반환되었다.
하지만 python2에서는 다음과 같이 나누기 전에 미리 float으로 명시해야주어야한다.
>>> 5 / 2
2
>>> 5 // 2
2
>>> float(5) / 2
2.5
python2에서는 5 / 2
와 5 // 2
의 결과가 같은 것을 확인할 수 있다.
python2에서 정수끼리 /
연산시 원하는 결과 값을 얻기 위해서는 float으로 변환해주어야 한다는 번거로움이 있다.
그래서 python2의 경우, 종종 다음과 같은 실수를 하는 경우를 볼 수 있다.
>>> float(5 / 2)
2.0
2.5라는 결과를 기대하고 연산 결과를 float으로 바꾸었지만, 2.0이 출력되었다.
float 안쪽에서 이미 2라는 int 값이 나오고, 이 값에 float을 씌웠기 때문이다.
정상적으로 동작하려면 위 예제처럼 float(5) / 2
, 혹은 5 / float(2)
와 같이,
계산 전에 최소 둘 중 하나를 float으로 변경해 주어야한다는 점을 주의하자. (python2 한정)