Namespaces
Variants

std:: fixed, std:: scientific, std:: hexfloat, std:: defaultfloat

From cppreference.net
< cpp ‎ | io ‎ | manip
Input/output manipulators
Floating-point formatting
fixed scientific hexfloat defaultfloat
(C++11) (C++11)
Integer formatting
Boolean formatting
Field width and fill control
Other formatting
Whitespace processing
Output flushing
Status flags manipulation
Time and money I/O
(C++11)
(C++11)
(C++11)
(C++11)
Quoted manipulator
(C++14)
Definido en el encabezado <ios>
(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.

1) Establece el floatfield del flujo str a fixed como si llamara a str. setf ( std:: ios_base :: fixed , std:: ios_base :: floatfield ) .
2) Establece el floatfield del flujo str a scientific como si se llamara a str. setf ( std:: ios_base :: scientific , std:: ios_base :: floatfield ) .
3) Establece el 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.
4) Establece el 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)