본문 바로가기

Language/C++

setprecision() 함수와 cout.precision()함수

정의 : iomanip 해더에 정의

setprecision함수는 C++에서 자리수를 맞추어 출력하기 위한 용도이다. 간단하게 C에서 printf

("%.2f",variable); 에서 %.2f 와 비슷한 효과를 가진다. 이런 함수를 조작자(manipulator)라고 하

며, 스트림을 조작하여 그 다음의 스트림 출력이 정해진 주요 자리수를 유지하도록 해준다.

setprecision(3) 을 사용하면, 구현시스템에게 주요 자리수 세 자리까지ㅣ 출력 할 수 있도록 한

다. 보통 소수점 앞에 두 자리, 뒤에 한 자리를 사용한다.

이렇게 정밀도를 변경 하였다면, 출력 구문이 끝난후 다시 정밀도를 이전상태로 돌려줘야 한다.

이때 사용하는 함수는 cout.precision()이다. 보통 다음과 같이 사용된다.

double output_result = 3.141597;
streamsize prec = cout.precision();
cout << "output" << setpercision(3) //정밀도 setting
<< result //적용된 값을 계산 3.14만 출력
<< setprecision(prec) << endl;//정밀도 해제

cout << result << endl;//3.141597 출력

위에서 사용된 streamsize type은 <ios>헤더에 정의되어 있으며, 이것은 입 . 출력 라이브러리가 크기를 나타내기 위하여 사용하는 type이다.

다음과 같이 precision 멤버 함수를 사용하여 정밀도를 설정 할 수도 있다.
streamsize prec = cout.precision(3);//정밀도 setting
cout << result << endl;
cout.precision(prec);//정밀도 해제

하지만 setprecision 조작자를 더 선호한다. 왜냐면, 정밀도가 별도의 값으로 설정되는 영역을 최소화 시킬 수 있기 때문이다.