#include<stdio.h>
int main(void)
{
int A, B;
scanf("%d %d", &A, &B);
printf("%.9f", (double)A / (double)B);
return 0;
}
예전에 풀었고 맞았던 문제이지만, 한번 더 풀어 보던 중 문제 지문의 출력 부분에서 정답과 출력 값의 절대 오차 또는 상대오차가 10의 -9승 이하이면 정답이다.라는 말에서 절대 오차와 상대오차가 무엇인지 찾아보았다.
c언어에서 float형은 상대오차가 10의 -7승 정도이고 double형은 10의 -15승 정도로 float형은 유효숫자 7자리까지 double형은 15자리이하까지 정확하게 표현이 가능하다는 뜻이다. 그러므로 문제에서 오차가 10의 -9승 이하이면 정답이라 했으므로 이의 범위를 포함시키는 double형을 사용해주고 출력할 소수점 자릿수를 지정해주어야 한다.
왜냐하면printf문에서 자릿수를 정확히 명시해주지 않으면 충분한 자릿수를 출력해주지 않기 때문에 정답이 아닌 오답이 되기 때문이다. 이문제에서는 소수점 9번째 자리까지 출력을 해주면 좋을 것 같다.
책과 인터넷에 있는 자료와 내가 직접 테스트를 해볼때의 실수 값의 표현 범위가 조금은 다른데, 이 부분은 내가 무엇을 놓쳤는지 확인해보고 습득해야겠다.
<절대 오차가 무엇인지 궁금해 찾아보았다>
https://www.scienceall.com/%ec%a0%88%eb%8c%80%ec%98%a4%ec%b0%a8absolute-error/?term_slug=