[C++ 소수자리수 다루기] precision & fixed

Yunsang You·2022년 2월 6일
0

백준 1008번 A / B를 풀다가 내가 C++ 소수점 출력 개념에 대해 잘 모르고 있다는 사실을
깨달았다.그렇게 알아보며 찾은 것이 cout.precision(n)fixed 의 사용법이다.
1008번 문제를 해결하면서 이에 대해 정리해 보고자 한다.



1008번: A / B


두 정수 A와 B를 입력받은 다음, A / B를 출력하는 프로그램을 작성하시오.
조건 : 실제 정답과 출력값의 절대오차 또는 상대오차가 10 - 9 이하일 것



문제를 해결하기 전에 cout.precision(n)fixed 에 대해 알아보겠다.

📝 cout.precision(n)

cout.precision(n) 은 실수를 n자리 만큼만 출력하게 한다.

double a = 1234.5678;
std::cout.precision(6);

std::cout < a;

위 예시는 결과적으로* "1234.57" *을 출력한다.

  • 1234.5678 6자리 만 출력하고 끝에서 반올림 *한 것이다.



📝 fixed

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;
}

맞았습니다!!




🤔첫 포스팅을 마치며

작심삼일 금지를 외치면서 마무리 하겠다.
작.심.삼.일.멈.춰!

profile
c++ 마스터이고 싶은 것.

0개의 댓글