Runden von Fließkommazahlen auf 2 Dezimalstellen in C++
-
Verwenden der Formatangaben der Funktion
printf
zum Runden von Fließkommazahlen auf 2 Dezimalstellen in C++ -
Verwenden von
fprintf
-Funktionsformatspezifikatoren zum Runden von Fließkommazahlen auf 2 Dezimalstellen in C++ -
Verwenden von
std::setprecision
undstd::fixed
zum Runden von Fließkommazahlen auf 2 Nachkommastellen in C++
In diesem Artikel werden verschiedene Methoden zum Runden von Gleitkommazahlen auf 2 Dezimalstellen in C++ erläutert.
Verwenden der Formatangaben der Funktion printf
zum Runden von Fließkommazahlen auf 2 Dezimalstellen in C++
Gleitkommazahlen haben eine spezielle binäre Darstellung, was bedeutet, dass reelle Zahlen von den Maschinen nicht genau dargestellt werden können. Daher ist es üblich, auf Rundungsfunktionen zurückzugreifen, wenn die Gleitkommazahlen bearbeitet und berechnet werden. In diesem Fall müssen wir jedoch nur einen bestimmten Teil des Bruchteils der Zahlen ausgeben.
Die erste Lösung besteht darin, die Funktion printf
zu verwenden, um formatierten Text in den Stream stdout
auszugeben. Beachten Sie, dass der reguläre Formatbezeichner für die float
-Nummern - %f
in %.2f
geändert werden sollte. Die letztere Notation stellt sicher, dass nur 2 Dezimalstellen von der Zahl gedruckt werden, und führt gleichzeitig die Rundung gemäß den allgemeinen mathematischen Regeln durch. Beachten Sie jedoch, dass eine ähnliche Notation mit Formatspezifizierern anderer Datentypen verwendet werden kann.
#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;
}
Ausgabe:
-3.51; -21.11; -1.99; 0.13; 2.50; 3.11;
Verwenden von fprintf
-Funktionsformatspezifikatoren zum Runden von Fließkommazahlen auf 2 Dezimalstellen in C++
fprintf
ist eine weitere Funktion, mit der die Ausgabeformatierung wie der Aufruf printf
ausgeführt werden kann. Außerdem kann sie in jedes Stream-Objekt FILE*
schreiben, das als erstes Argument übergeben werden kann. Im folgenden Beispiel wird das Drucken im Stream stderr
demonstriert, einer ungepufferten Version von stdout
für die Fehlerberichterstattung und Protokollierung.
#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;
}
Ausgabe:
-3.51; -21.11; -1.99; 0.13; 2.50; 3.11;
Verwenden von std::setprecision
und std::fixed
zum Runden von Fließkommazahlen auf 2 Nachkommastellen in C++
Alternativ kann die Funktion std::setprecision
aus der Bibliothek der E / A-Manipulatoren in Verbindung mit std::fixed
verwendet werden. Letzteres wird verwendet, um die Standardformatierung für Gleitkomma-Eingabe- / Ausgabeoperationen zu ändern. Wenn wir es zusammen mit std::setprecision
verwenden, ist das Ergebnis eine feste Genauigkeit der reellen Zahlen, und die Genauigkeit kann mit dem an std::setprecision
selbst übergebenen Ganzzahlargument angegeben werden.
#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;
}
Ausgabe:
-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