C++에서 부동 소수점 숫자를 2 진수로 반올림
-
printf
함수 형식 지정자를 사용하여 C++에서 부동 소수점 숫자를 2 진수로 반올림 -
fprintf
함수 형식 지정자를 사용하여 C++에서 부동 소수점 숫자를 2 진수로 반올림 -
std::setprecision
및std::fixed
를 사용하여 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 진수로 반올림
fprintf
는printf
호출과 같은 출력 형식 지정을 수행하는 데 사용할 수있는 또 다른 함수이며 추가로 첫 번째 인수로 전달할 수있는 모든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::setprecision
및std::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;
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