std::cout 소수점 자리수 고정

Posted on 2022-12-06 by GKSRUDTN99
Problem Solving CPP

cout을 통해 실수 자료형을 출력하면, 출력되는 소수의 자리수가 정수 부분이 포함되어 6자리로 출력되므로, 출력되는 소수의 자리수가 일정하지 않습니다.

보통 PS에서는 소수 n번째 자리에서 반올림하여 출력을 요구하는 문제가 많은데, 이 때 cout을 그대로 사용하면 소수점 자리수가 맞지 않아 틀리게 됩니다.

이를 위해 cout이 실수 자료형을 출력할 때

  1. 정수 부분은 제외하고 소수 부분만 자리수로 계산하도록 설정
  2. 자리수를 원하는 숫자로 설정

위 두 가지 설정이 필요합니다.

먼저, 1)에 해당하는 명령어는 cout.setf(ios::fixed);입니다.

일 때, A의 값을 cout을 통해 출력하면

// cout의 기본 자릿수는 6으로 설정되어 있습니다.
cout << A;
// 123.456 출력
// 정수부분 + 소수부분의 자리수 = 6

위와 같은 결과를 얻을 수 있습니다. 이 때, cout.setf(ios::fixed);를 사용하면

cout.setf(ios::fixed);
cout << A;
// 123.456789 출력
// 소수부분의 자리수 = 6

위 처럼 소수 부분의 자리수가 6(기본값)으로 고정된 것을 확인할 수 있습니다.

이제, 문제에서 요구하는대로 소수점 아래 2번째 자리에서 반올림 한 결과를 출력하고 싶다면, cout.precision(2); 명령어를 사용합니다.

기본값이 6으로 설정된 cout의 자릿수를, 원하는 숫자로 바꾸는 명령어 입니다.

cout.precision(2);
cout << A;
// 123.46 출력

...
Anonymous    Feb. 6, 2024, 1:57 a.m.

Hello.