[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 / 25 // 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 한정)




코딩장이

코딩장이

-장이: [접사] ‘그것과 관련된 기술을 가진 사람’의 뜻을 더하는 접미사.

rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora