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