[Java] 자바 정수(int)를 나누어서 소수점 값 쉽게 출력하는 법

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에 담아주는 것이다.