Espacios de nombres
Variantes
Acciones

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
setprecision
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)
 
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.

Contenido

[editar] Parámetros

n - Nuevo valor para la precisión.

[editar] 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);
}

[editar] 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

[editar] 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.

[editar] 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]