백준 1008번: A/B (C언어)

백준 1008번: A/B
https://www.acmicpc.net/problem/1008

1. 문제

2. 풀이

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
    double num1,num2;
    scanf("%lf %lf",&num1,&num2);
    printf("%.9f",num1/num2);
}

3. Keypoint

floatdouble
공통점실수형실수형
차이점 ①유효자릿수 7자리유효자릿수 15-16자리
차이점 ②printf 혹은 scanf 사용시 모두 %f로 표기printf는 %f로, scanf는 %lf로 표기

따라서 double형 변수를 사용하면 출력은 %f로 입력은 %lf로 표기해야함.


또한, 해당 문제의 예제 1번을 보면
"10^-9 이하의 오차를 허용한다는 말은 꼭 소수 9번째 자리까지만 출력하라는 뜻이 아니다." 라고 나와있다.
➔ 즉, 소수 9번째 자리 이상 출력이 되어야 한다는 것이다. 그러므로 출력시 .9f를 통해, 소수 9번째 이상으로 출력 되어야 한다.
▲ %.8f, %.7f .... %f로 출력 시 틀리게 된다. 문제의 의도는 소수 9번째 자리 이상 출력하는 것이기 때문이다. 하지만 %.9f 그 이상 (ex. %.10f)은 무관하다.

좋은 웹페이지 즐겨찾기