백준이나 프로그래머스 등 자바 프로그래밍 관련 문제를 풀 때,

 

초보자라면 궁금증한 것 중 하나가 바로

 

나눗셈 소수점 자리까지 값을 얻는 방법에 관한 것이다.

 

 

 

 

예를들어,

 

1 / 3 = 0.333333 의 값을 출력하고 싶은데,

 

자연스럽게 아래의 코드를 입력하면

 

출력값은 0.0이 나올 뿐이다.

 

int a = 1;
int b = 3;

double result = a / b;

System.out.println(result);  // 출력: 0.0

 

이렇게, 

 

result만 실수 타입으로 선언하면 소수점까지 쫙 나올 줄 알았는데,

 

출력은 0.0 으로 나온다.

 

 

 

 

결론적으로, 결과가 소수점까지 나오도록 하기 위해서는,

 

나누어주는 변수 a, b 둘 중 하나라도 실수형 타입이어야만

 

결과값이 소수점까지 표현이 된다.

 

 

따라서 아래와 같이 변경해주면 된다.

 

 

int a = 1;
double b = 3;

double result = a / b;

System.out.println(result);  // 출력: 0.3333333333333333

 

int a = 1;
int b = 3;

double result = (double) a / b;   // 정수 a를 실수형 타입으로 캐스팅(형 변환)

System.out.println(result);  // 출력: 0.3333333333333333 

 

 

 

 

 

 

그렇다면, a와 b를 실수형으로, result값을 정수형으로 선언하면 어떻게 될까?

 

자바 나눗셈 소수점까지 1

 

 

실수형끼리의 연산 시 기본적으로 실수형의 값이 반환되고,

 

실수형 값을 정수형 변수에 넣을 경우 캐스팅을 억지로 하지 않는 이상

 

위와 같은 에러가 발생한다!