Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- C
- 10171
- 전공자
- 프로그래밍언어
- 정보처리기사실기
- 7008번
- 비전공자
- 코테
- 정보처리기사
- double
- 정처기
- 2588
- 코딩테스트
- 곱셈
- 알람시계
- 개발
- 프로그래머스
- 정처기필기
- 합격후기
- 2884
- 정보처리기사합격후기
- precision
- 파이썬
- 10172
- 정보처리기사필기
- float
- 백준
- 프로그래밍
- 정처기실기
- 코딩
Archives
- Today
- Total
Like a Star
백준 1008번 A/B 본문
https://www.acmicpc.net/problem/1008
1008번: A/B
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
정수인 A, B를 입력하고 A/B를 출력하는 문제.
실제 정답과 절대오차 또는 상대오차가 10-9 이하여야 한다는 조건이 붙어있다.
처음 작성한 코딩은 다음과 같다.
#include <iostream>
using namespace std;
int main()
{
float A, B;
cin >> A >> B;
cout << A/B;
return 0;
}
결과는 오답.
정답은 다음과 같다.
#include <iostream>
using namespace std;
int main()
{
double A, B;
cin >> A >> B;
cout.precision(20);
cout << A/B;
return 0;
}
오답의 요인 첫번째는 변수형.
실제 정답과 오차가 10-9 이하가 조건이였기 때문에 약 10-7 오차 범위를 가지는 float은 적절하지 못한 변수형이였다. 따라서 float 대신 double을 사용해주어야 한다.
참고로 double는 범위 오차가 약 10-15 이라고 알려져 있다.
오답의 두번째 요인은 출력이였는데 첫번째 코드처럼 코딩하고 출력하면 소수점이 여섯자리까지밖에 출력되지 않는다. 따라서 cout.precision(n) 을 사용해 주어야 한다.
cout.precision(n) 은 실수를 n자리까지 표현해준다. '소수점'을 n자리까지 출력해주는 것이 아니라 '실수 전체' 범위라는 것을 유념해서 n은 여유있게 설정해 주었다.
'PL > C++' 카테고리의 다른 글
백준 2884번 알람 시계 (0) | 2022.07.04 |
---|---|
백준 2588번 곱셈 (0) | 2022.07.04 |
백준 10171번 고양이 (0) | 2022.07.04 |
Comments