Wie druckt man Zahlen mit angegebenen Dezimalpunkten in C++
Dieser Artikel führt ein, wie die Zahlen mit angegebenen Dezimalzeichen in C++ gedruckt werden können.
Verwenden der Methoden std::fixed
und std::setprecision
zur Angabe der Genauigkeit
Diese Methode verwendet sogenannte E/A-Manipulatoren aus der Standardbibliothek, die im <iomanip>
Header definiert sind (siehe vollständige Liste). Diese Funktionen können die Stream-Daten modifizieren und werden meist für E/A-Formatierungsoperationen verwendet. Im ersten Beispiel verwenden wir nur die fixed
-Methode, die die Standardformatierung so modifiziert, dass die Fließkommawerte in Festkomma-Notation geschrieben werden. Beachten Sie jedoch, dass das Ergebnis immer eine vordefinierte Genauigkeit von 6 Punkten hat.
#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;
}
Ausgabe:
123.231000
2.234300
0.324000
10.222424
6.349109
110.123294
92.001112
0.000000
Alternativ können wir die Dezimalpunkte nach dem Komma fixieren und gleichzeitig den Präzisionswert angeben. Im nächsten Code-Beispiel wird die fixed
Funktion zusammen mit setprecision
aufgerufen, die ihrerseits den Wert int
als Parameter annimmt.
#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;
}
Ausgabe:
123.231
2.234
0.324
10.222
6.349
110.123
92.001
0.000
Das vorherige Code-Beispiel löst das anfängliche Problem, aber die Ausgabe scheint recht gemischt zu sein, und sie ist kaum in lesbarer Formatierung. Wir können die Funktionen std::setw
und std::setfill
verwenden, um Float-Werte in einem gegebenen Vektor an der gleichen Komma-Position ausgerichtet anzuzeigen. Um dies zu erreichen, sollten wir die Funktion setw
aufrufen, um dem cout
die maximale Länge jeder Ausgabe mitzuteilen (in diesem Fall wählen wir 8). Als nächstes wird die Funktion setfill
aufgerufen, um ein char
anzugeben, das die Auffüllstellen ausfüllt. Zuletzt fügen wir die zuvor verwendeten Methoden (fixed
und setprecision
) und die Ausgabe auf der Konsole hinzu.
#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;
}
Ausgabe:
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