백준 1008번 A / B를 풀다가 내가 C++ 소수점 출력 개념에 대해 잘 모르고 있다는 사실을
깨달았다.그렇게 알아보며 찾은 것이cout.precision(n)
과fixed
의 사용법이다.
1008번 문제를 해결하면서 이에 대해 정리해 보고자 한다.
두 정수 A와 B를 입력받은 다음, A / B를 출력하는 프로그램을 작성하시오.
조건 : 실제 정답과 출력값의 절대오차 또는 상대오차가 10 - 9 이하일 것
문제를 해결하기 전에 cout.precision(n)
과 fixed
에 대해 알아보겠다.
cout.precision(n)
은 실수를 n자리 만큼만 출력하게 한다.
double a = 1234.5678;
std::cout.precision(6);
std::cout < a;
위 예시는 결과적으로* "1234.57" *을 출력한다.
fixed
는 고정 소수점 표기로 fixed
를 사용한 이 후 부터는 cout.precision(n)
에서 받은 n값 만큼 소수점 아래 자리수를 출력하게 된다.
double a = 333.333333;
std::cout.precision(6);
std::cout << std::fixed;
std::cout < a;
위 예시는 결과적으로 "333.333333"을 출력한다.
소수점 아래로 cout.precision(6)
에서 받아온 6만큼 6자리를 출력한 것이다.
fixed
를 해제하기 위해서는 std::cout.unsetf(std::ios::fixed)
를 이용하면 된다.이제 위에서 알아봤던 cout.precision(n)
과 fixed
를 이용해 문제를 해결해 보겠다.
#include <iostream>
int main() {
double a, b;
std::cin >> a;
std::cin >> b;
std::cout.precision(9);
std::cout << std::fixed;
std::cout << a / b;
return 0;
}
맞았습니다!!
작심삼일 금지를 외치면서 마무리 하겠다.
작.심.삼.일.멈.춰!