std::setprecision
De cppreference.com
<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
outes un objeto de tipostd::basic_ostream<CharT, Traits>, la expresiónout << setprecision(n)- tiene tipo
std::basic_ostream<CharT, Traits>& - tiene valor
out - se comporta como si llamara a
f(out, n)
- tiene tipo
- si
ines un objeto de tipostd::basic_istream<CharT, Traits>, la expresiónin >> setprecision(n)- tiene tipo
std::basic_istream<CharT, Traits>& - tiene valor
in - se comporta como si llamara a
f(in, n)
- tiene tipo
donde la función f se define como:
void f(std::ios_base& str, int n)
{
// establecer la precisión
str.precision(n);
}
Ejemplo
Ejecuta este código
#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
(C++11)(C++11) |
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) |
| Gestiona la precisión decimal de las operaciones de punto flotante. (función miembro pública de std::ios_base)
|