035 나눗셈과 나머지의 버림 계산
다음과 같이 나눈다고 가정하자.
double z = (double)222/14;
z는 나눗셈의 결과인 15.85로 초기화되는데, 이 문제에서는 나눗셈의 몫을 버림한 15(대수 몫(algebraic quotient)보다 작거나 같은 가장 큰 정숫값)를 얻고자 한다. 한 가지 해법으로서 Math.floor(15.85)로 원하는 결과인 15를 얻을 수 있다.
하지만 222와 14는 정수이므로 위 나눗셈을 다음과 같이 작성해보자.
int z = 222/14;
이렇게 하면 정확히 원하던 결과인 15가 나온다(/ 연산자는 0에 가장 가까운 정수를 반환한다). Math.floor(z)가 없어도 된다. 게다가 제수가 0이면 222/0은 ArithmeticException을 던진다.
지금까지의 결론은 부호가 같은 두 정수(둘 다 양수 혹은 둘 다 음수)의 나눗셈의 버림을 / 연산자로 구할 수 있다는 것이다.
지금까지는 좋았지만 다음 두 정수를 가정해보자(부호가 서로 반대다. 즉, 피제수가 음수이고 제수가 양수이거나 혹은 그 반대다).
double z = (double) -222/14;
이번에는 z가 -15.85다. 앞선 예제처럼 Math.floor(z)를 쓰면 올바른 결과인 -16(대수 몫보다 작거나 같은 가장 큰 정숫값)이 나온다.