반응형
https://www.acmicpc.net/problem/1008
1008번: A/B
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
º 문제
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10^(-9) 이하이면 정답이다.
방법 1로 이동하기
º 방법 1: 나의 알고리즘/접근
자료형 double
º 방법 1: 나의 코드
º 방법 2
º 주의할 점
1. 실수 자료형의 사용
float형의 경우 소수 부분 6자리까지 표시된다.
double형의 경우 소수 부분 15자리까지 표시된다.
long double형의 경우 소수 부분 15자리까지 표시된다. (형식 지정자가 lf가 아니라 Lf이다. lf로 입력하면 double형으로 출력된다.)
이 문제의 출력 예시에서 소수 부분이 6자리 이상이므로 double형을 사용해야 한다.
2. scanf()에서의 포맷 문자
scanf에서 포맷문자가 f이고 변수의 size가 4이면 float으로 처리하고,
변수의 size가 8이면 double로 처리하게 됩니다.
scanf는 입력을 받아야하므로 모든 변수를 포인터로 받게 되는데,
포인터는 주소값 4Byte만 전달될 뿐 해당 포인터가 가리키는 자료형이 무엇인가는 전달되지 않습니다.
즉, scanf가 전달받는 포인터는 void타입 포인터로 보면 됩니다.
그러므로 float과 double을 f와 lf로 구분해주어야 하는데, 문제에서는 소수점 9자리 이상 출력이었으므로 double을 사용해야 하는 문제입니다.
scanf처럼 type이 가변형인 경우는 타입정보를 명시해 주는 수단으로써 포맷정보를 이용하게 되는 것입니다.
출처: https://jwprogramming.tistory.com/5 [개발자를 꿈꾸는 프로그래머]
3. 절대/상대오차 10^(-9) 이하
오차 범위는 float 가 10-7 전후 정도라고 하고, double은 10-15 정도
반응형
'Algorithm > C프로그래밍' 카테고리의 다른 글
[C언어] 입력 값을 변수에 저장하기 (1): 문자 + 버퍼는 무엇인가? (0) | 2021.06.30 |
---|---|
[C언어] while문의 조건문에 함수를 입력할 수 있다. (0) | 2021.06.28 |
[C언어] 백준 10998번: A*B (0) | 2021.06.26 |
[C언어] 백준 1001번: A-B (0) | 2021.06.26 |
[C언어] 백준 1000번: A+B (0) | 2021.06.26 |