결과값이 왜 NaN으로 나올까요..?
힌트와 정답코드를 봐도 이해가 안 갑니다 ㅠㅠ
# 속도 변환하기
#### CODE <a class='btn btn-default' href='/codes/21226'>Link</a>
```
public class Speed {
public static void main (String[] args) {
int meter = Integer.parseInt(args[0]);
int sec = Integer.parseInt(args[1]);
//1km = 1000m
double kilo = meter/1000;
double hour = sec/(60*60);
//속도 = 거리/시간
double speed = kilo/hour;
System.out.printf("%.1f km/h", speed);
}
}
```
#### INPUT
```
100 18
```
#### OUPUT
```
NaN km/h
```
sehongpark님의 답변
# kilo와 hour의 값을 중간 중간 확인해보세요.
아래 코드를 실행하면
```
public class SpeedByJiyoung {
public static void main(String[] args) {
int meter = 100;
int sec = 18;
// 1km = 1000m
double kilo = meter / 1000;
System.out.println("kilo = " + kilo);
// hour =
double hour = sec / (60 * 60);
System.out.println("hour = " + hour);
//속도 = 거리/시간
double speed = kilo / hour;
System.out.printf("%.1f km/h", speed);
}
}
```
결과는 다음과 같습니다.
```
kilo = 0.0
hour = 0.0
NaN km/h
```
여기서 좀 의아할겁니다. kilo 값이 왜 0.0이지? hour는 왜 또 0.0인가..? 싶을 건데요.
### int 와 int의 연산은 int 입니다.
아래 코드에서 kilo의 값이 0.1이길 기대하겠지만, 소수점 이하가 버려진 `0`이 됩니다.
```
double kilo = 100 / 1000;
// double kilo = 0;
// double kilo = 0.0;
```
그럼 어떻게 해야할까? meter와 sec를 double 변수로 선언하면 됩니다.
```
public class SpeedByJiyoung {
public static void main(String[] args) {
double meter = 100;
double sec = 18;
// 1km = 1000m
double kilo = meter / 1000;
System.out.println("kilo = " + kilo);
// hour =
double hour = sec / (60 * 60);
System.out.println("hour = " + hour);
//속도 = 거리/시간
double speed = kilo / hour;
System.out.printf("%.1f km/h", speed);
}
}
```
수행 결과
```
kilo = 0.1
hour = 0.005
20.0 km/h
```
자세한 내용은 다음 링크를 확인해보세요. 타입과 형변환(https://cloudstudying.kr/lectures/70)