Namensräume
Varianten
Aktionen

std::setprecision

Von cppreference.com
< cpp‎ | io‎ | manip
 
 
 
Input/output-Manipulatoren
Formatierung von Gleitkommazahlen
setprecision
Ganzzahlformatierung
Boolean-Formatierung
Feldbreiten- und Füllzeichensteuerung
Andere Formatierungen
Leerzeichenverarbeitung
Ausgabe-Flushen
(C++20)  

Statusflags-Manipulation
Zeit- und Geld-I/O
(C++11)
(C++11)
(C++11)
(C++11)
Gequoteter Manipulator
(C++14)
 
Definiert im Header <iomanip>
/*unspecified*/ setprecision( int n );

Wenn in einem Ausdruck out << setprecision(n) oder in >> setprecision(n) verwendet, wird der Parameter precision des Streams out oder in auf exakt n gesetzt.

Inhalt

[edit] Parameter

n - Neuer Wert für die Genauigkeit

[edit] Rückgabewert

Ein Objekt eines nicht spezifizierten Typs, so dass

  • wenn out ein Objekt vom Typ std::basic_ostream<CharT, Traits> ist, der Ausdruck out << setprecision(n)
    • vom Typ std::basic_ostream<CharT, Traits>& ist
    • hat den Wert out
    • verhält sich so, als ob er f(out, n) aufrufen würde
  • wenn in ein Objekt vom Typ std::basic_istream<CharT, Traits> ist, der Ausdruck in >> setprecision(n)
    • vom Typ std::basic_istream<CharT, Traits>& ist
    • hat den Wert in
    • verhält sich so, als ob er f(in, n) aufrufen würde

wobei die Funktion f definiert ist als

void f(std::ios_base& str, int n)
{
    // set precision
    str.precision(n);
}

[edit] Beispiel

#include <iomanip>
#include <iostream>
#include <limits>
#include <numbers>
 
int main()
{
    constexpr long double pi{std::numbers::pi_v<long double>};
 
    const auto default_precision{std::cout.precision()};
    constexpr auto max_precision{std::numeric_limits<long double>::digits10 + 1}; 
 
    std::cout << "default precision: " << default_precision << '\n'
              << "maximum precision: " << max_precision << "\n\n"
                 "precision: pi:\n";
 
    for (int p{0}; p <= max_precision; ++p)
        std::cout << std::setw(2) << p << "  " << std::setprecision(p) << pi << '\n';
 
    std::cout << std::setprecision(default_precision); // restore defaults
}

Ausgabe

default precision: 6
maximum precision: 19
 
precision: pi:
 0  3
 1  3
 2  3.1
 3  3.14
 4  3.142
 5  3.1416
 6  3.14159
 7  3.141593
 8  3.1415927
 9  3.14159265
10  3.141592654
11  3.1415926536
12  3.14159265359
13  3.14159265359
14  3.1415926535898
15  3.14159265358979
16  3.141592653589793
17  3.1415926535897932
18  3.14159265358979324
19  3.141592653589793239

[edit] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 183 C++98 setprecision konnte nur mit Streams verwendet werden
vom Typ std::ostream oder std::istream
verwendbar mit jedem
Zeichenstrom

[edit] Siehe auch

Ändert die für Gleitkomma-I/O verwendete Formatierung
(Funktion) [bearbeiten]
verwaltet die Dezimalgenauigkeit von Fließkommaoperationen
(public member function of std::ios_base) [bearbeiten]