tipos sintaxis programas funciones float ejemplos datos comandos codigos c++ double cout ostream scientific-notation

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.



Utilice el manipulador de flujo de std::fixed :

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