더하기는 i의 5와 j의 2가 더해져 7이라는 값을 출력합니다. 빼기도 3을 출력합니다. 곱하기도 마찬가지입니다. 별표(*)를 사용해 출력하면 곱한 값 10을 출력합니다. 나누기는 ‘왼쪽에 있는 피연산자를 오른쪽 피연산자로 나누어서 그 몫을 구해주세요.’라는 의미입니다. 따라서 ‘i / j’는 5를 2로 나눈 값 2가 나옵니다.
자, 여기서 문제입니다. 5를 2로 나누면 2.5인데 왜 2.5가 아니라 2가 나왔을까요? 왜냐하면 변수가 정수와 정수(int i, int j)로 선언했기 때문에 피연산자 역시 정수이기 때문입니다. 정수끼리의 연산은 정숫값으로만 반환됩니다.
자, 두 번째 문제입니다. 만약 나눈 결과로 2.5라는 값을 얻고 싶다면 어떻게 해야 할까요? 답은 피연산자 둘 중에 최소한 하나가 실수여야 합니다. 그럼 하나를 실수로 바꿔볼까요? 앞에서 공부한 형변환을 사용하면 됩니다. j를 double형으로 형변환하겠습니다. 이런 것을 캐스팅 연산자라고도 합니다. 단항 연산자입니다. j를 실수형으로 바꾸고 난 다음 다시 연산하면 2.5라는 실숫값을 얻을 수 있습니다.
public class OperatorExam {
public static void main(String[] args) {
int i = 5;
int j = 2;
System.out.println(i / (double) j);
}
}
실행결과
2.5