Wie druckt man Zahlen mit angegebenen Dezimalpunkten in C++

Jinku Hu 12 Oktober 2023
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
Autor: 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

Verwandter Artikel - C++ Float