C++에서 부동 소수점 숫자를 2 진수로 반올림

Jinku Hu 2023년10월12일
  1. printf함수 형식 지정자를 사용하여 C++에서 부동 소수점 숫자를 2 진수로 반올림
  2. fprintf함수 형식 지정자를 사용하여 C++에서 부동 소수점 숫자를 2 진수로 반올림
  3. std::setprecisionstd::fixed를 사용하여 C++에서 부동 소수점 숫자를 2 진수로 반올림합니다
C++에서 부동 소수점 숫자를 2 진수로 반올림

이 기사에서는 C++에서 부동 소수점 숫자를 소수 2 자리로 반올림하는 방법에 대한 몇 가지 방법을 설명합니다.

printf함수 형식 지정자를 사용하여 C++에서 부동 소수점 숫자를 2 진수로 반올림

부동 소수점 숫자에는 특수 이진 표현이 있으며, 이는 실수를 기계로 정확하게 표현할 수 없다는 것을 의미합니다. 따라서 부동 소수점 수에 대해 연산하고 계산을 수행 할 때 반올림 함수에 의존하는 것이 일반적입니다. 하지만이 경우에는 숫자의 분수 부분 중 특정 부분 만 출력하면됩니다.

첫 번째 해결책은printf함수를 사용하여 형식화 된 텍스트를stdout스트림에 출력하는 것입니다. float숫자-%f에 대한 일반 형식 지정자는%.2f로 수정되어야합니다. 후자의 표기법은 숫자에서 소수 2 자리 만 인쇄되도록하는 동시에 일반적인 수학적 규칙에 따라 반올림을 수행합니다. 다른 데이터 유형의 형식 지정자와 함께 유사한 표기법을 사용할 수 있습니다.

#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<double> floats{-3.512312, -21.1123, -1.99, 0.129, 2.5, 3.111};

  for (auto &item : floats) {
    printf("%.2f; ", item);
  }

  return EXIT_SUCCESS;
}

출력:

-3.51; -21.11; -1.99; 0.13; 2.50; 3.11;

fprintf함수 형식 지정자를 사용하여 C++에서 부동 소수점 숫자를 2 진수로 반올림

fprintfprintf 호출과 같은 출력 형식 지정을 수행하는 데 사용할 수있는 또 다른 함수이며 추가로 첫 번째 인수로 전달할 수있는 모든FILE*스트림 객체에 쓸 수 있습니다. 다음 예에서는 오류보고 및 로깅을 위해 버퍼링되지 않은stdout 버전 인stderr 스트림으로 인쇄하는 방법을 보여줍니다.

#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<double> floats{-3.512312, -21.1123, -1.99, 0.129, 2.5, 3.111};

  for (auto &item : floats) {
    fprintf(stderr, "%.2f; ", item);
  }

  return EXIT_SUCCESS;
}

출력:

-3.51; -21.11; -1.99; 0.13; 2.50; 3.11;

std::setprecisionstd::fixed를 사용하여 C++에서 부동 소수점 숫자를 2 진수로 반올림합니다

또는std::fixed와 함께 I/O 조작기의 라이브러리에서std::setprecision기능을 사용할 수 있습니다. 후자는 부동 소수점 입력 / 출력 작업의 기본 형식을 수정하는 데 사용됩니다. 이것을std::setprecision과 함께 사용하면 결과는 실수의 고정 정밀도이며std::setprecision자체에 전달 된 정수 인수로 정밀도를 지정할 수 있습니다.

#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> floats{-3.512312, -21.1123, -1.99, 0.129, 2.5, 3.111};

  for (auto &item : floats) {
    cout << setprecision(2) << fixed << item << "; ";
  }

  return EXIT_SUCCESS;
}

출력:

-3.51; -21.11; -1.99; 0.13; 2.50; 3.11;
작가: 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