차곡차곡 적립해야할 개념들을 정리해보자.
👩💻💭 int형의 변수들을 연산(예를 들어 A/B)한 후, 자료형을 변환하여(예를 들어 double로) 출력하고 싶을 땐
printf("%lf", (double)A/B); // double 자료형의 입출력은 %lf
👩💻💭 double 형은 소수점 6자리까지만 출력한다. 이 문제 같은 경우에는,
정수 A,B를 입력받고 예제 출력과 같이 소수점을 이용하여 결과값을 출력해야한다. 이때 출력의 조건으로 "실제 정답과 출력값의 절대오차 또는 상대오차가 10^-9 이하이면 정답이다."라는 구절을 확인할 수 있다. 즉슨, 실제 정답과 출력값은 10^-8 까지 동일해야한다는 사실을 파악할 수 있다.
그러나 앞서 언급한 것처럼 double 자료형은 소수점 6자리, 즉 10^-6까지만 출력한다. 따라서 예제 1번의 경우, double로 출력한 값은 0.3333330000000,,, 이지만 원하는 값은 0.3333333333333333333,,, 이기 때문에 오차범위가 10^-9자리 이내로 발생하여 오류가 발생하게 된다. 이러한 문제를 해결하기 위해 double 자료형을 소수점 몇째자리까지 출력할 것인지를 지정하는 부분이 추가적으로 필요하다는 것을 알 수 있다.
👩💻💭 결론적으로, 1,에서 살펴본 출력문에서,
printf("%0.9lf", (double)A/B); // lf 앞 0.n을 추가하면 소수점 n번째자리까지 연산하여 출력하는 것을 의미
이런식으로 소수점 9번째자리까지 출력하겠다는 코드로 수정하여 실행한다면, 요구하는 조건에 부합하는 코드가 실행되는것을 확인할 수 있다.
<submit code>
// correct code
#include <stdio.h>
int main(){
int A, B;
scanf("%d %d", &A, &B);
printf("%0.9lf", (double)A/B);
return 0;
}
<result>
야호!
<오늘의 잔디밭>
2023년은 너무 휑해서 차마 올릴 수가.. 🥲
2024년 잔디밭을 잘 채워보자!! 🤓
'studylog' 카테고리의 다른 글
240624 가천대 DNA School 헬스케어 파이썬 분석 실무 1일차 (0) | 2024.06.25 |
---|---|
~240502 백준 review - [입출력과 사칙연산] (0) | 2024.05.02 |
231020 TIL (0) | 2023.10.20 |
231018 TIL (1) | 2023.10.18 |
231017 TIL (0) | 2023.10.18 |