2022년 10월 24일 월요일

파이썬 정수 나눗셈 (/, // 차이)

 이건 버젼별로 살짝 다른 부분이 있습니다. 파이썬 2.7에서 다음과 같이 나누기를 하면 나눗셈 연산이 버림을 기본으로 하는 정수 연산으로 수행이 됩니다. 정수끼리 나눗셈을 하면 정수를 리턴하고 , 실수가 중간에 끼어있으면 실수값이 리턴됩니다.

이게 C와 비슷한데 정수끼리 나눗셈을 할 경우 기본적으로 정수로 가정해서 연산을 하고는 합니다. 실수형을 리턴받기 위해서는 아래와 같이 하나를 실수로 변경(2 -> 2.0)하면 결과값이 실수가 리턴이 됩니다.

# python 2.7 
4 / 2 
>> 2 # int
4 / 2.0
>> 2.0 # float

파이썬 3에서는 / 연산은 float 을 리턴합니다. 즉, 나눗셈연산이 기본적으로 실수연산으로 전환이 됩니다. 정수연산을 하기위해서는 // 을 사용해서 정수연산을 수행합니다.

# python 3
4 / 2 
>> 2.0 # float
4 // 2
>> 2 # int

/ 연산자를 floating으로 전환 한다해도 정수연산이 필요한 경우가 여전히 존재하므로, 이때는 //로 정수 나눗셈연산으로 처리를 할 수가 있습니다.

이걸 왜 구분해야하는냐 이 float 연산과 int 연산은 속도 차이가 좀 있습니다. 보통은 나눗셈연산이 오래 걸리기때문에, 정수로 처리할 수 있는 것들은 정수로 처리하는게 수행시간 측면에서 유리합니다 그리고 이런 나눗셈연산자는 % 와 같은 나머지 연산자와 보통 정수와 같이 핸들링하는 경우가 많습니다.

그래서 이 차이를 알고 사용하는 것이 좀더 최적화된 구조를 만드는데 도움이 되리라 생각합니다.

이번에는 정수 나눗셈연산에 정리해보았습니다. 이부분이 실제로 작성하다보면 종종 놓치는 부분이기도 하니, 이 정수 나눗셈이 버젼별로 다름을 살짝 인지하고 정수 나눗셈이랑 실수 나눗셈을 구분해서 사용하면 좋을듯합니다.

댓글 없음:

댓글 쓰기