2020-10-29
자바의 나누기 연산자는 모두가 아는 2 가지가 있으며, 하나는 몫을 저장하는 '/' 연산자 나머지를 저장하는 '%'이다.
이는 굉장히 편리하게 활용되는데, 아주 가끔 불편하게 느껴질때도 있는데, 그때가 바로 소수점까지 구해야 하는 경우이다. 지금 부터 그러한 경우의 해결방법을 알아보도록 하자.
(지금부터 모든 예는 우측 예제로 들겠다. ex) 10 / 4 = 2.5)
초기 속성타입을 double를 지정한다면, 쉽게 해결된 문제이지만, int / byte / short과 같은 속성 타입을 초기에 지정했다면, 다소 난감할 수 도 있다.
(다만 그렇다고 모든 변수를 double로 설정하지는 말자. 이는 int = 4byte 의 크기 이지만 double 은 8byte의 크기이기 때문에 코드양이 늘어나면 그 만큼 데이터의 양도 배로 커지게 된다.)
public class TemplateA {
public static void main(String[] args) {
int ten = 10;
int four = 4;
System.out.println(ten / four);
//console 출력 값: 2
이 경우에는 크게 두 가지 방법으로 해결할 수 있다. 바로 아래 코드를 보자.
public class TemplateA {
public static void main(String[] args) {
int ten = 10;
int four = 4;
double answer1 = (ten * 1.0) / four;
double answer2 = (double) ten / four;
System.out.println(answer1);
//console 출력 값 : 2.5
System.out.println(answer2);
//console 출력 값 : 2.5
}
}
첫 번째 방법은 정수값으로 지정된 ten을 1.0을 곱해줘 double 형 데이터로 변경해준 뒤 계산하는 방법
두 번째 방법은 강제타입 변환을 이용하여 ten 변수를 double 형 데이로 변경해준 방법이다.
(아래처럼 순서를 바꾸어도 출력되는 값은 같다!)
public class TemplateA {
public static void main(String[] args) {
int ten = 10;
int four = 4;
double answer1 = ten / (four * 1.0);
double answer2 = ten / (double)four;
System.out.println(answer1);
//console 출력 값 : 2.5
System.out.println(answer2);
//console 출력 값 : 2.5
}
}
이 두 가지 방법 모두 공통점이 있는데, 정수형 데이터 중 하나를 double 형 데이터로 바꾸어 주어,
새로운 double형 변수 answer에 담아주는 것이다.