close
Espacios de nombres
Variantes

std::setprecision

De cppreference.com
< cpp | io | manip
 
 
Biblioteca de E/S
Manipuladores de E/S
E/S estilo C
Búferes
(en desuso en C++98)
Flujos
Abstracciones
E/S de archivos
E/S de cadenas
E/S de arrays
(en desuso en C++98)
(en desuso en C++98)
(en desuso en C++98)
Salida sincronizada
Tipos
Interfaz de categoría de error
(C++11)
 
Manipuladores de E/S
Formateo de punto flotante
Formateo de enteros
Formateo de booleanos
Control de ancho de campo y relleno
Otro formateo
Procesamiento de espacio en blanco
Vaciado de salida
(C++20)  

Manipulación de indicadores de estado
E/S de tiempo y dinero
(C++11)
(C++11)
(C++11)
(C++11)
Manipulación entre comillas
(C++14)
 
<tbody> </tbody>
Definido en el archivo de encabezado <iomanip>
/* no especificado */ setprecision( int n );

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

Parámetros

n - Nuevo valor para la 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 la 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); // restablecer precisión 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 de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 183 C++98 setprecision solo se podía usar con flujos de tipo std::ostream o std::istream. Usable con cualquier flujo de caracteres.

Véase también

Los cambios de formato utilizado para punto flotante de I / O
Original:
changes formatting used for floating-point I/O
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(función) [editar]
Gestiona la precisión decimal de las operaciones de punto flotante.
(función miembro pública de std::ios_base) [editar]