Namespaces
Variants

std:: setprecision

From cppreference.net
< cpp ‎ | io ‎ | manip
Input/output manipulators
Floating-point formatting
Integer formatting
Boolean formatting
Field width and fill control
Other formatting
Whitespace processing
Output flushing
Status flags manipulation
Time and money I/O
(C++11)
(C++11)
(C++11)
(C++11)
Quoted manipulator
(C++14)
Definiert in Header <iomanip>
/*unspecified*/ setprecision ( int n ) ;

Wenn in einem Ausdruck verwendet out << setprecision ( n ) oder in >> setprecision ( n ) , setzt den precision -Parameter des Streams out oder in exakt auf n .

Inhaltsverzeichnis

Parameter

n - neuer Wert für die Genauigkeit

Rückgabewert

Ein Objekt eines nicht näher spezifizierten Typs, sodass

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

wobei die Funktion f definiert ist als:

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

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

Fehlerberichte

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

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

Siehe auch

ändert die Formatierung für Gleitkomma-Ein-/Ausgabe
(Funktion)
verwaltet die Dezimalgenauigkeit von Gleitkommaoperationen
(öffentliche Elementfunktion von std::ios_base )