C++에서 cout 출력 스트림은 다양한 조작자(manipulator)를 지원합니다. 이 조작자들을 활용하면 cout 객체에 직접 정밀도(precision)를 설정하고, fixed 형식 지정자를 함께 사용해 소수점 아래 자릿수를 고정된 형태로 출력할 수 있습니다.
일반적으로 cout은 기본적으로 유효 숫자 6자리까지만 출력하기 때문에, double 타입이 가진 전체 정밀도를 확인하려면 별도의 설정이 필요합니다. 이때 <limits> 헤더에 정의된 std::numeric_limits를 사용하면 해당 타입이 표현할 수 있는 최대 유효 자릿수(max_digits10)를 손쉽게 얻을 수 있습니다.
예제 코드
#include<iostream>
#include <limits>
using namespace std;
int main() {
// double 타입의 숫자 한계값(최대 유효 자릿수) 가져오기
typedef std::numeric_limits< double > dbl;
double PI = 3.14159265358979;
// 최대 유효 자릿수만큼 정밀도 설정 후 fixed로 출력
cout.precision(dbl::max_digits10);
cout << "Pi: " << fixed << PI << endl;
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Pi: 3.14159265358979
핵심 포인트 정리
- cout.precision(n): 출력할 유효 숫자의 자릿수를 n으로 설정합니다.
- fixed: 고정 소수점 표기법을 적용하여, precision이 소수점 이하 자릿수를 의미하도록 동작을 변경합니다.
- max_digits10: 해당 부동소수점 타입의 값이 서로 구별되기 위해 필요한 최대 유효 십진 자릿수입니다.
double의 경우 일반적으로 17입니다.
이처럼 numeric_limits<double>::max_digits10과 fixed 조작자를 함께 사용하면, double 값이 가진 정보를 손실 없이 완전한 정밀도로 화면에 출력할 수 있습니다.