std:: setprecision
|
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
|
(C++11)
(C++11)
|
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
)
|