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
.