C++에서 실수(부동소수점) 값을 미리 정해둔 소수점 자릿수까지만 출력해야 하는 경우가 자주 있습니다. 이럴 때 setprecision 조작자(manipulator)를 cout과 함께 사용하면 손쉽게 해결할 수 있습니다. setprecision은 iomanip 헤더 파일에 정의되어 있으므로, 사용하기 전에 반드시 #include <iomanip>을 추가해야 합니다.
예제 코드
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double x = 2.3654789;
cout << fixed; // 소수점 이하 자릿수를 기준으로 고정
cout << "소수점 3자리까지 출력: " << setprecision(3) << x << endl;
cout << "소수점 2자리까지 출력: " << setprecision(2) << x << endl;
cout << "소수점 7자리까지 출력: " << setprecision(7) << x << endl;
return 0;
}
실행 결과
소수점 3자리까지 출력: 2.365 소수점 2자리까지 출력: 2.37 소수점 7자리까지 출력: 2.3654789
fixed 조작자의 역할
주의할 점은 setprecision이 기본 모드에서는 유효 숫자(significant digits)의 개수를 지정한다는 것입니다. 예를 들어 setprecision(3)을 단독으로 사용하면 2.3654789가 2.37로 출력됩니다. 소수점 이하 자릿수를 정확하게 제어하려면 위 예제처럼 fixed 조작자를 함께 사용해야 합니다. fixed를 적용하면 이후의 setprecision 값이 소수점 이하 자릿수로 해석됩니다.
또한 한 번 설정한 setprecision 값은 스트림에 계속 유지되므로, 출력 자릿수를 바꾸고 싶을 때마다 setprecision을 다시 호출해 주면 됩니다. 금액, 측정값 등 소수점 형식이 중요한 데이터를 다룰 때 매우 유용한 기법입니다.