1.
double a = 5/2;
더블이면 실수형이라 2.5 로 표현되는게 아닌가요?
printf 로 출력했을 땐 2.000000
println 으로 출력했을 땐 2.0
2.
double b = 5.0 / 2.0; 이것 2.5가 나오는거는 알겠습니다.
printf 로 출력했을 땐 2.500000
println 으로 출력했을 땐 2.5
무슨 차이인가요?
3.
double c = (int) (5.0 / 2.0); 2.5 인데 int로 캐스팅을 해서 답은 2 아닌가요?
답변 부탁드립니다.ㅠ
sehongpark님의 답변
# 타입과 형변환
## 답변 1
질문 코드의 실행흐름은 아래와 같습니다.
```
// 초기 코드
double a = 5 / 2;
// 나눗셈 연산
double a = 2; // 5 / 2 는 int 값이므로 2가 됨.
// 대입 연산
double a = 2; // 이때 자동 형변환 됨. 따라서 a = 2.0
```
## 답변 2
printf()의 경우 소수점 이하 6자리까지 출력합니다. println()은 그렇지 않습니다.
## 답변 3
질문 코드의 실행 흐름은 아래와 같습니다.
```
// 초기 코드
double c = (int) (5.0 / 2.0);
// 나눗셈 연산
double c = (int) 2.5;
// 캐스팅
double c = 2;
// 대입 연산
double c = 2; // 이때 자동 형변환. 따라서 c = 2.0
```