std::fixed, std::scientific, std::hexfloat, std::defaultfloat
De cppreference.com
Definido en el archivo de 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 formateo por defecto de salida de punto flotante.
1) Establece el campo
floatfield
del flujo str to fixed
como si se llamara a str.setf(std::ios_base::fixed, std::ios_base::floatfield).2) Establece el campo
floatfield
del flujo str to scientific
como si se llamara a str.setf(std::ios_base::scientific, std::ios_base::floatfield).3) Establece el campo
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 formateo de punto flotante hexadecimal.4) Establece el campo
floatfield
del flujo str a cero, como si se llamara a str.unsetf(std::ios_base::floatfield). Esto habilita el formateo por defecto de punto flotante, que es distinto del fijo y del científico.Este es un manipulador de E/S, puede llamarse con una expresión tal como out << std::fixed para cualquier out
de tipo std::basic_ostream (o con una expresión tal como in >> std::scientific para cualquier in
de tipo std::basic_istream).
Contenido |
[editar] Parámetros
str | - | Referencia al flujo de E/S. |
[editar] Valor de retorno
str (Referencia al flujo después de la manipulación).
[editar] Notas
El formateo hexadecimal de punto flotante ignora la especificación de precisión del flujo, como se requiere por la especificación de std::num_put::do_put.
Estos manipuladores no afectan el análisis de punto flotante.
[editar] Ejemplo
Ejecuta este código
#include <iomanip> #include <iostream> #include <sstream> enum class leyenda { titulo, medio, final }; void imprimir(const char* texto, double num, leyenda ley) { if (ley == leyenda::titulo) std::cout << "┌──────────┬────────────────┬──────────────────────────┐\n" "│ número │ manipulador │ representación │\n" "├──────────┼────────────────┼──────────────────────────┤\n"; std::cout << std::left << "│ " << std::setw(8) << texto << " │ fixed │ " << std::setw(24) << std::fixed << num << " │\n" << "│ " << std::setw(8) << texto << " │ scientific │ " << std::setw(24) << std::scientific << num << " │\n" << "│ " << std::setw(8) << texto << " │ hexfloat │ " << std::setw(24) << std::hexfloat << num << " │\n" << "│ " << std::setw(8) << texto << " │ default │ " << std::setw(24) << std::defaultfloat << num << " │\n"; std::cout << (ley != leyenda::final ? "├──────────┼────────────────┼──────────────────────────┤\n" : "└──────────┴────────────────┴──────────────────────────┘\n"); } int main() { imprimir("0.0", 0.0, leyenda::titulo); imprimir("0.01", 0.01, leyenda::medio); imprimir("0.00001", 0.00001, leyenda::final); // NOTA; escoger clang for para salida correcta double f; std::istringstream("0x1.8p+0") >> f; std::cout << "El análisis de 0x1.8p+0 da como resultado " << f << '\n'; std::istringstream("0x1P-1022") >> f; std::cout << "El análisis de 0x1P-1022 da como resultado " << f << '\n'; }
Salida:
┌──────────┬────────────────┬──────────────────────────┐ │ número │ manipulador │ representación │ ├──────────┼────────────────┼──────────────────────────┤ │ 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 │ └──────────┴────────────────┴──────────────────────────┘ El análisis de 0x1.8p+0 da como resultado 1.5 El análisis de 0x1P-1022 da como resultado 2.22507e-308
[editar] Véase también
Cambia la precisión de punto flotante. (función) |