# 리뷰: 온도 변환하기 왜 printf에선 .1을 안써주면 답이 이상하게 나올까요? #### CODE <a class='btn btn-default' href='/codes/26612'>Link</a> ``` public class Lab03Review { public static void main(String[] args) { /* 1. 문자열을 실수로 변환하세요. */ double a = Double.parseDouble(args[0]); /* 2. 화씨온도를 섭씨로 변환하세요. */ double b = (a-32.0)/1.8; /* 3. 결과를 출력하세요. */ System.out.printf("화씨 %.1f도는 섭씨로 %.1f도 입니다!", a, b); } } ``` #### INPUT ``` 77.0 ``` #### OUPUT ``` 화씨 77.0도는 섭씨로 25.0도 입니다! ```
# printf의 실수 출력은 기본적으로, 소숫점 이하 여섯째 자리까지 출력합니다. 따라서 문제에서 원하는 결과를 얻기 위해서 `.1`을 넣어야합니다. ``` 화씨 77.000000도는 섭씨로 25.000000도 입니다! ``` ## PS. 질문 감사합니다 (_ _)
입력 값 77.0이 double 타입으로 형변환 되어 변수 a에 저장됩니다. 현재 a에 저장된 값이 77.000000 인데 (a-32.0)/1.8 식에 넣어 계산하면 25.000000 이 변수 b에 저장됩니다. b의 값을 %f로 출력하면 25.000000 인데 25. 뒤에 소수점이하 첫째자리 까지만 출력하기 위해 %.1f 를 사용하여 b의 값을 출력하면 25.0 이 출력됩니다. 즉 %.1f 의 의미는 소수점이하 첫째자리 까지만 출력하겠다는 의미 입니다.
답변 감사드립니다