C++에서 지정된 소수점으로 숫자를 인쇄하는 방법
이 기사에서는 C++에서 지정된 소수점으로 숫자를 인쇄하는 방법을 소개합니다.
std::fixed
및std::setprecision
메서드를 사용하여 정밀도 지정
이 방법은<iomanip>
헤더에 정의 된 표준 라이브러리의 소위 I/O 조작기를 사용합니다 (전체 목록 참조). 이러한 함수는 스트림 데이터를 수정할 수 있으며 대부분 I/O 형식화 작업에 사용됩니다. 첫 번째 예에서는 부동 소수점 값이 고정 소수점 표기법을 사용하여 기록되도록 기본 서식을 수정하는fixed
메서드 만 사용합니다. 그러나 결과에는 항상 사전 정의 된 정밀도 6 포인트가 있습니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324,
10.222424, 6.3491092019, 110.12329403024,
92.001112, 0.000000124};
for (auto &d : d_vec) {
cout << fixed << d << endl;
}
return EXIT_SUCCESS;
}
출력:
123.231000
2.234300
0.324000
10.222424
6.349109
110.123294
92.001112
0.000000
또는 쉼표 뒤에 소수점을 고정하고 정밀도 값을 동시에 지정할 수 있습니다. 다음 코드 예제에서fixed
함수는setprecision
과 함께 호출되며, 자체적으로int
값을 매개 변수로 사용합니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::setprecision;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324,
10.222424, 6.3491092019, 110.12329403024,
92.001112, 0.000000124};
for (auto &d : d_vec) {
cout << fixed << setprecision(3) << d << endl;
}
return EXIT_SUCCESS;
}
출력:
123.231
2.234
0.324
10.222
6.349
110.123
92.001
0.000
이전 코드 샘플은 초기 문제를 해결하지만 출력이 상당히 혼합 된 것처럼 보이며 읽기 쉬운 형식이 아닙니다. std::setw
및std : setfill
함수를 사용하여 동일한 쉼표 위치에 정렬 된 주어진 벡터에 부동 소수점 값을 표시 할 수 있습니다. 이를 달성하려면setw
함수를 호출하여cout
에게 각 출력의 최대 길이를 알려야합니다 (이 경우 8을 선택합니다). 다음으로, 패딩 자리를 채울char
를 지정하기 위해setfill
함수가 호출됩니다. 마지막으로 이전에 사용한 메서드 (fixed
및setprecision
)를 추가하고 콘솔에 출력합니다.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::setfill;
using std::setprecision;
using std::setw;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324,
10.222424, 6.3491092019, 110.12329403024,
92.001112, 0.000000124};
for (auto &d : d_vec) {
cout << setw(8) << setfill(' ') << fixed << setprecision(3) << d << endl;
}
return EXIT_SUCCESS;
}
출력:
123.231
2.234
0.324
10.222
6.349
110.123
92.001
0.000
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook