std::fixed, std::scientific, std::hexfloat, std::defaultfloat
De cppreference.com
<tbody>
</tbody>
| 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).
Parámetros
| str | - | Referencia al flujo de E/S. |
Valor de retorno
str (Referencia al flujo después de la manipulación).
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.
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
Véase también
| Cambia la precisión de punto flotante. (función) |