programas - sintaxis de c++
Cómo hacer que C++ cout no use notación científica (4)
double x = 1500;
for(int k = 0; k<10 ; k++){
double t = 0;
for(int i=0; i<12; i++){
t += x * 0.0675;
x += x * 0.0675;
}
cout<<"Bas ana: "<<x<<"/tSon faiz: "<<t<<"/tSon ana: "<<x+t<<endl;
}
esta es la salida
Bas: 3284.78 Son faiz: 1784.78 Son ana: 5069.55
Bas: 7193.17 Son faiz: 3908.4 Son ana: 11101.6
Bas: 15752 Son faiz: 8558.8 Son ana: 24310.8
Bas: 34494.5 Son faiz: 18742.5 Son ana: 53237
Bas: 75537.8 Son faiz: 41043.3 Son ana: 116581
Bas ana: 165417 Son faiz: 89878.7 Son ana: 255295
Bas: 362238 Son faiz: 196821 Son ana: 559059
Bas: 793246 Son faiz: 431009 Son ana: 1.22426e + 006
Bas ana: 1.73709e + 006 Son faiz: 943845 Son ana: 2.68094e + 006
Bas: 3.80397e + 006 Son faiz: 2.06688e + 006 Son ana: 5.87085e + 006
Quiero que los números se muestren con números exactos y no con números científicos. ¿Cómo puedo hacer esto?
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, después de haber hecho esto, cada vez que imprima un flotador o un doble en cualquier parte de su proyecto , el número se imprimirá en esta notación fija. Podrías regresar utilizando
cout << scientific;
pero esto puede volverse tedioso si tu código se vuelve más complicado.
Esta es la razón por la cual Boost creó el Ahorro de estado de E / S Stream , que automáticamente devuelve la transmisión de E / S que está utilizando al estado en que se encontraba antes de su llamada de 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 acerca de Boost''s I / O Stream State Saver en los documentos oficiales .
También es posible que desee consultar la biblioteca de Boost Format, que también puede facilitar su salida, especialmente si tiene que tratar con la internacionalización. Sin embargo, no te ayudará para este problema en particular.
Hay una colección completa de operadores de formato que obtienes con iostream. Aquí hay un tutorial para comenzar.
Puede usar banderas de formato
Más información: http://www.cplusplus.com/reference/iostream/ios_base/fmtflags/
Utilice el manipulador de flujo de std::fixed
:
cout<<fixed<<"Bas ana: "<<x<<"/tSon faiz: "<<t<<"/tSon ana: "<<x+t<<endl;