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)
Défini dans l'en-tête <iomanip>
/*non spécifié*/ setprecision ( int n ) ;

Lorsqu'il est utilisé dans une expression out << setprecision ( n ) ou in >> setprecision ( n ) , définit le paramètre precision du flux out ou in exactement à n .

Table des matières

Paramètres

n - nouvelle valeur pour la précision

Valeur de retour

Un objet de type non spécifié tel que

  • si out est un objet de type std:: basic_ostream < CharT, Traits > , l'expression out << setprecision ( n )
    • a pour type std:: basic_ostream < CharT, Traits > &
    • a pour valeur out
    • se comporte comme si elle appelait f ( out, n )
  • si in est un objet de type std:: basic_istream < CharT, Traits > , l'expression in >> setprecision ( n )
    • a pour type std:: basic_istream < CharT, Traits > &
    • a pour valeur in
    • se comporte comme si elle appelait f ( in, n )

où la fonction f est définie comme :

void f(std::ios_base& str, int n)
{
    // définir la précision
    str.precision(n);
}

Exemple

#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 << "précision par défaut: " << default_precision << '\n'
              << "précision maximale: " << max_precision << "\n\n"
                 "précision: 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); // restaurer les valeurs par défaut
}

Sortie :

précision par défaut: 6
précision maximale: 19
précision: 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

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 183 C++98 setprecision ne pouvait être utilisé qu'avec des flux
de type std::ostream ou std::istream
utilisable avec tout
flux de caractères

Voir aussi

modifie le formatage utilisé pour les E/S en virgule flottante
(fonction)
gère la précision décimale des opérations en virgule flottante
(fonction membre publique de std::ios_base )