C++에서 지정된 소수점으로 숫자를 인쇄하는 방법

Jinku Hu 2023년10월12일
C++에서 지정된 소수점으로 숫자를 인쇄하는 방법

이 기사에서는 C++에서 지정된 소수점으로 숫자를 인쇄하는 방법을 소개합니다.

std::fixedstd::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::setwstd : setfill 함수를 사용하여 동일한 쉼표 위치에 정렬 된 주어진 벡터에 부동 소수점 값을 표시 할 수 있습니다. 이를 달성하려면setw 함수를 호출하여cout에게 각 출력의 최대 길이를 알려야합니다 (이 경우 8을 선택합니다). 다음으로, 패딩 자리를 채울char를 지정하기 위해setfill 함수가 호출됩니다. 마지막으로 이전에 사용한 메서드 (fixedsetprecision)를 추가하고 콘솔에 출력합니다.

#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
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

관련 문장 - C++ Float