Saltar al contenido

Cómo hacer que C ++ cout no use notación científica

Solución:

Usar std::fixed manipulador de flujo:

cout<<fixed<<"Bas ana: "<<x<<"tSon faiz: "<<t<<"tSon ana: "<<x+t<<endl;

Como se mencionó anteriormente, puede usar std::fixed para resolver su problema, así:

cout << fixed;
cout << "Bas ana: " << x << "tSon faiz: " << t << "tSon ana: " << x+t <<endl;

Sin embargo, una vez hecho esto, cada vez que imprima un float o un double en cualquier lugar de su proyecto, el número aún se imprimirá en esta notación fija. Podrías revertirlo usando

cout << scientific;

pero esto puede volverse tedioso si su código se vuelve más complicado.

Es por eso que Boost hizo el Ahorro de estado de flujo de E / S, que devuelve automáticamente el flujo de E / S que está utilizando al estado en el que estaba antes de la llamada a la función. Puedes usarlo así:

#include <boost/io/ios_state.hpp> // you need to download these headers first

{
    boost::io::ios_flags_saver  ifs( os );

    cout << ios::fixed;
    cout<<"Bas ana: "<<x<<"tSon faiz: "<<t<<"tSon ana: "<<x+t<<endl;

} // at this bracket, when ifs goes "out of scope", your stream is reset

Puede encontrar más información sobre I / O Stream State Saver de Boost en los documentos oficiales.

Es posible que también desee consultar la biblioteca Boost Format, que también puede facilitar la producción, especialmente si tiene que lidiar con la internacionalización. Sin embargo, no le ayudará con este problema en particular.

codifique la siguiente sintaxis:

std::cout << std::fixed << std::setprecision(n);

dónde (n) es el número de precisión decimal. Esto debería arreglarlo.

Ps: necesitas #include <iomanip> para usar std::setprecision.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *