std:: fixed, std:: scientific, std:: hexfloat, std:: defaultfloat
|
Definido en el encabezado
<ios>
|
||
|
std::
ios_base
&
fixed
(
std::
ios_base
&
str
)
;
|
(1) | |
|
std::
ios_base
&
scientific
(
std::
ios_base
&
str
)
;
|
(2) | |
|
std::
ios_base
&
hexfloat
(
std::
ios_base
&
str
)
;
|
(3) | (desde C++11) |
|
std::
ios_base
&
defaultfloat
(
std::
ios_base
&
str
)
;
|
(4) | (desde C++11) |
Modifica el formato predeterminado para la salida de números de punto flotante.
floatfield
del flujo
str
a
fixed
como si llamara a
str.
setf
(
std::
ios_base
::
fixed
,
std::
ios_base
::
floatfield
)
.
floatfield
del flujo
str
a
scientific
como si se llamara a
str.
setf
(
std::
ios_base
::
scientific
,
std::
ios_base
::
floatfield
)
.
floatfield
del flujo
str
a
fixed
y
scientific
simultáneamente como si se llamara a
str.
setf
(
std::
ios_base
::
fixed
|
std::
ios_base
::
scientific
,
std::
ios_base
::
floatfield
)
. Esto habilita el formato hexadecimal de punto flotante.
floatfield
del flujo
str
a cero, como si se llamara a
str.
unsetf
(
std::
ios_base
::
floatfield
)
. Esto habilita el formato predeterminado de punto flotante, que es diferente de fixed y scientific.
Este es un manipulador de E/S, puede ser llamado con una expresión como
out
<<
std
::
fixed
para cualquier
out
de tipo
std::basic_ostream
(o con una expresión como
in
>>
std
::
scientific
para cualquier
in
de tipo
std::basic_istream
).
Contenidos |
Parámetros
| str | - | referencia al flujo de E/S |
Valor de retorno
str (referencia al flujo después de la manipulación).
Notas
El formato de punto flotante hexadecimal ignora la especificación de precisión del flujo, como requiere la especificación de std::num_put::do_put .
Estos manipuladores no afectan el análisis de punto flotante.
Ejemplo
#include <iomanip> #include <iostream> #include <sstream> enum class cap { title, middle, end }; void print(const char* text, double num, cap c) { if (c == cap::title) std::cout << "┌──────────┬────────────┬──────────────────────────┐\n" "│ number │ iomanip │ representation │\n" "├──────────┼────────────┼──────────────────────────┤\n"; std::cout << std::left << "│ " << std::setw(8) << text << " │ fixed │ " << std::setw(24) << std::fixed << num << " │\n" << "│ " << std::setw(8) << text << " │ scientific │ " << std::setw(24) << std::scientific << num << " │\n" << "│ " << std::setw(8) << text << " │ hexfloat │ " << std::setw(24) << std::hexfloat << num << " │\n" << "│ " << std::setw(8) << text << " │ default │ " << std::setw(24) << std::defaultfloat << num << " │\n"; std::cout << (c != cap::end ? "├──────────┼────────────┼──────────────────────────┤\n" : "└──────────┴────────────┴──────────────────────────┘\n"); } int main() { print("0.0", 0.0, cap::title); print("0.01", 0.01, cap::middle); print("0.00001", 0.00001, cap::end); // Nota: elija clang para una salida correcta double f; std::istringstream("0x1.8p+0") >> f; std::cout << "Parsing 0x1.8p+0 gives " << f << '\n'; std::istringstream("0x1P-1022") >> f; std::cout << "Parsing 0x1P-1022 gives " << f << '\n'; }
Salida:
┌──────────┬────────────┬──────────────────────────┐ │ number │ iomanip │ representation │ ├──────────┼────────────┼──────────────────────────┤ │ 0.0 │ fixed │ 0.000000 │ │ 0.0 │ scientific │ 0.000000e+00 │ │ 0.0 │ hexfloat │ 0x0p+0 │ │ 0.0 │ default │ 0 │ ├──────────┼────────────┼──────────────────────────┤ │ 0.01 │ fixed │ 0.010000 │ │ 0.01 │ scientific │ 1.000000e-02 │ │ 0.01 │ hexfloat │ 0x1.47ae147ae147bp-7 │ │ 0.01 │ default │ 0.01 │ ├──────────┼────────────┼──────────────────────────┤ │ 0.00001 │ fixed │ 0.000010 │ │ 0.00001 │ scientific │ 1.000000e-05 │ │ 0.00001 │ hexfloat │ 0x1.4f8b588e368f1p-17 │ │ 0.00001 │ default │ 1e-05 │ └──────────┴────────────┴──────────────────────────┘ Parsing 0x1.8p+0 gives 1.5 Parsing 0x1P-1022 gives 2.22507e-308
Véase también
|
cambia la precisión de punto flotante
(función) |