결과값이 왜 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 ```
# 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)