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)
Definido en el encabezado <iomanip>
/*unspecified*/ setprecision ( int n ) ;

Cuando se utiliza en una expresión out << setprecision ( n ) o in >> setprecision ( n ) , establece el parámetro precision del stream out o in exactamente a n .

Contenidos

Parámetros

n - nuevo valor para precisión

Valor de retorno

Un objeto de tipo no especificado tal que

  • si out es un objeto de tipo std:: basic_ostream < CharT, Traits > , la expresión out << setprecision ( n )
    • tiene tipo std:: basic_ostream < CharT, Traits > &
    • tiene valor out
    • se comporta como si llamara a f ( out, n )
  • si in es un objeto de tipo std:: basic_istream < CharT, Traits > , la expresión in >> setprecision ( n )
    • tiene tipo std:: basic_istream < CharT, Traits > &
    • tiene valor in
    • se comporta como si llamara a f ( in, n )

donde la función f se define como:

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

Ejemplo

#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 << "precisión por defecto: " << default_precision << '\n'
              << "precisión máxima: " << max_precision << "\n\n"
                 "precisión: 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); // restaurar valores por defecto
}

Salida:

precisión por defecto: 6
precisión máxima: 19
precisión: 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

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 183 C++98 setprecision solo podía usarse con flujos
de tipo std::ostream o std::istream
utilizable con cualquier
flujo de caracteres

Véase también

cambia el formato utilizado para E/S de punto flotante
(función)
gestiona la precisión decimal de operaciones de punto flotante
(función miembro pública de std::ios_base )