[문제] 정수 연산 2/5, -2/5, -(2/5)의 결과를 확인하고 각각의 결과가 왜 그렇게 나오는지 설명하라.
우선 위 문제에서 제시한 각각의 연산을 파이썬(v2.6) IDLE에서 수행해보겠습니다.
파이썬에서 정수형을 정수형으로 나누면 결과는 정수형이 되므로 2/5 는 예상한 대로 0 이 나오는 것이 맞습니다.
그리고 -(2/5) 는 2/5 의 결과에 음수 부호를 붙인 것이므로 역시 0 이 되는 것이 맞지요. 그런데 문제는 왜 -2/5 의
결과가 0 이 아니고 -1 이 되느냐 하는 것인데요. 우선 이와 관련된 내용을 조금 살펴보도록 하겠습니다.
제수나 피제수, 어느 한 쪽이 음수인 경우의 나눗셈에 대한 의견이 수학자들 사이에서도 분분하다고 합니다. 그리고
이로 인해 나눗셈에 대한 알고리즘이 프로그래밍 언어에 따라 서로 다르기도 합니다. 예를 들어 C, C++, Java 등의 언어
에서 -2/5 의 결과는 0 이 됩니다. 0 이 나온 이유는 이들 언어에서는 -2/5 를 단순히 -(2/5) 와 마찬가지로 취급하기 때문
입니다. 하지만 Python이나 Ruby 에서 -2/5 를 수행해보면 -1 이란 결과를 얻게 됩니다. 이는 나눗셈에 대한 알고리즘이
다르기 때문인데요. 이에 대한 것은 구글링을 해보면 많은 내용들을 살펴보실 수 있을 겁니다.
여기서는 파이썬이 어떻게 이런 결과가 나오도록 되어 있는지만 단순하게 말씀드리고자 합니다.
파이썬에서 제수와 피제수의 부호가 다른 경우...즉, 어느 한 쪽이 음수인 경우 나눗셈 결과보다 크지 않은 가장 큰 정수를
몫으로 취합니다. 그래서 일반적으로 예상한 -2/5 의 결과인 0 보다 크지 않은 정수인 -1 이 몫으로 나오게 되는 것입니다.
파이썬 나눗셈, Python 나눗셈

