소수점 고정 출력
cout << fixed와 cout.precision(n)을 이용하면 소수점을 고정해서 출력할 수 있다. cout << fixed는 C++에서 숫자를 고정 소수점 형식으로 출력할 때 사용하는 조작자이다.
C++에서는 숫자를 출력할 때 기본적으로 정수와 부동 소수점 형식을 제공한다. 부동 소수점 숫자를 출력할 때 과학적 표기법(ex: 1.23e+02)이나 일반 표기법을 사용할 수 있다. fixed 조작자는 부동 소수점 숫자를 고정 소수점 형식으로 출력하도록 지정한다.
사용법
fixed 조작자는 iostream 헤더에 정의되어 있으며 다음과 같이 사용할 수 있다.
#include <iostream>
#include <iomanip> // setprecision
using namespace std;
int main() {
double num = 123.456789;
cout << num << '\n'; // 예: 1.23457e+02
cout << fixed;
cout << num << '\n'; // 123.456789
cout << setprecision(2);
cout << num << '\n'; // 123.46
return 0;
}
- 기본 출력:
- 기본적으로 cout은 부동 소수점 숫자를 출력할 때 가끔 과학적 표기법을 사용한다.
- fixed 사용
- cout << fixed;를 사용하면 부동 소수점 숫자가 고정 소수점 형식으로 출력된다.
- 예를 들어, 123.456789는 123.456789로 출력된다. 과학적 표기법 대신 일반 소수점 표기법을 사용한다.
- 소수점 이하 자리수 지정
- setprecision 조작자를 사용하여 출력할 소수점 이하 자리수를 지정할 수 있다.
- cout << setprecision(2);는 소수점 이하 2자리까지만 출력하도록 설정한다.
- 이 경우, 123.456789는 123.46으로 출력된다.
cout.precision() vs setprecision()
cout.precision()과 cout << setprecision()은 둘 다 소수점 이하 자리수를 설정하는 데 사용된다. 두 방법 모두 유사한 기능을 제공하지만, 사용 방식과 용도가 조금 다르다.
cout.precision
cout.precision()은 ostream 객체의 멤버 함수로 출력 스트림의 소수점 이하 자리수를 설정하거나 반환한다.
#include <iostream>
using namespace std;
int main() {
double num = 123.456789;
// 기본 출력
cout << num << '\n'; // 예: 123.457
// 소수점 이하 자릿수 설정
cout.precision(2);
cout << num << '\n'; // 예: 1.2e+02 (fixed를 사용하지 않으면 과학적 표기법이 사용될 수 있음)
// fixed와 함께 사용
cout << fixed;
cout << num << '\n'; // 예: 123.46
return 0;
}
setprecision 사용
setprecision은 <iomanip> 헤더에 정의된 조작자로, 출력 스트림에서 사용할 소수점 이하 자리수를 설정한다.
#include <iostream>
#include <iomanip> // for setprecision
using namespace std;
int main() {
double num = 123.456789;
// 기본 출력
cout << num << '\n'; // 예: 123.457
// setprecision 사용
cout << fixed << setprecision(2);
cout << num << '\n';
return 0;
}
비교
- setprecision은 특정 출력 시점에만 소수점 이하 자리수를 설정할 수 있어서 다음 출력에 영향을 미치지 않는다. 특정 구간에서만 정밀도를 변경하고 다시 원상태로 돌아가야 할 경우 유용하다.
- setprecision은 <iomanip> 헤더에 정의된 다른 조작자와 함께 사용될 때 코드가 더 읽기 쉽고 직관적이기 때문에, 가독성과 유지보수성을 높여준다.
- setprecision은 fixed 또는 scientific과 함께 사용되어 출력을 더 일관되게 제어할 수 있다. 이는 출력 형식을 쉽게 변경할 수 있게 해준다.
- cout.precision()은 멤버 함수로, 출력 스트림의 정밀도를 영구적으로 설정하거나 변경할 때 사용한다. 반면 setprecision은 일시적으로 특정 출력에서만 정밀도를 변경하는 데 더 적합하며, 다른 조작자와 결합하여 코드의 가독성과 일관성을 높이는 데 도움이 된다.
'C++' 카테고리의 다른 글
[C++] assign과 resize의 차이 (1) | 2024.11.10 |
---|---|
[C++] 소수점 고정 시 반올림 오류와 부동 소수점 오차 (0) | 2024.08.13 |
[C++] cin과 getline(), 그리고 cin.ignore() (0) | 2024.08.13 |
[C++] 참조(reference)와 복사(copy)의 차이 (0) | 2024.07.25 |
[C++] terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc (0) | 2024.05.21 |