프로그래밍 공부하기

[Python] //연산과 %연산의 결과는 다른 언어와 다르다. 본문

Web/[Other] Language

[Python] //연산과 %연산의 결과는 다른 언어와 다르다.

ihl 2020. 12. 19. 17:57

1. //연산

//은 나눈 값을 정수로 돌려주는 연산자이다. 처음에는 /연산을 한 후 integer으로 형변환(소수점 이하 버림)하여 반환하는 줄 알았다. 그러나 Python에서 //연산은 나눈 값에 내림을 취하므로 예상과는 다른 결과가 나온다.

 -5 / -4        #-1.25 
 int(-5 / -4)   #-1 예상결과 
 -5 // -4       #-2 실제결과 


2. %연산


나눗셈을 연산으로 공식으로 일반화하면 다음과 같다.(a: 잿수, d:피젯수, q: 몫, r:나머지)

a/d = q...r <=> a = qd + r

%연산을 위한 몫을 계산할 때 Python의 경우 값에 내림을 취하고, C++, Javascript 등은 버림(≒형변환)을 취하므로
음수 %연산은 python의 결과와 C++, javascript 등의 언어의 결과와 다를 수 있다.

[python]

-5 % 4 # -5 = 4 * (-2) + 3 = 젯수(4) * 몫(-2) + 3(나머지) 


[C++]

 -5 % 4 // -1 = 4 * (-1) + (-1) = 젯수(4) * 몫(-1) + (-1)(나머지)

 

 

 


참고 사이트

stackoverflow.com/questions/3883004/the-modulo-operation-on-negative-numbers-in-python

 

The modulo operation on negative numbers in Python

I've found some strange behaviour in Python regarding negative numbers: >>> -5 % 4 3 Could anyone explain what's going on?

stackoverflow.com

 

'Web > [Other] Language' 카테고리의 다른 글

Go  (0) 2021.03.12
[Python] 웹크롤링 2 - 로그인  (0) 2021.02.28
[Python] 웹크롤링 1 - BeautifulSoup와 requests  (0) 2021.01.09
[Python] 아스키코드변환: ord, chr  (0) 2021.01.08
Comments