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;
}
c'est la sortie
Bas ana: 3284.78 Fils faiz: 1784.78 Fils ana: 5069.55
Bas ana: 7193.17 Fils faiz: 3908.4 Fils ana: 11101.6
Bas ana: 15752 Fils faiz: 8558.8 Fils ana: 24310.8
Bas ana: 34494.5 Fils faiz: 18742.5 Fils ana: 53237
Bas ana: 75537.8 Fils faiz: 41043.3 Fils ana: 116581
Bas ana: 165417 Fils faiz: 89878.7 Fils ana: 255295
Bas ana: 362238 Fils faiz: 196821 Fils ana: 559059
Bas ana: 793246 Fils faiz: 431009 Fils ana: 1.22426e + 006
Bas ana: 1.73709e + 006 Faiz fils: 943845 Son ana: 2.68094e + 006
Bas ana: 3.80397e + 006 Fils faiz: 2.06688e + 006 Fils ana: 5.87085e + 006
Je veux que les nombres soient affichés avec des nombres exacts et non des nombres scientifiques. Comment puis-je faire ceci?
Utilisation std::fixed
manipulateur de flux:
cout<<fixed<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;
Comme mentionné ci-dessus, vous pouvez utiliser std :: fixed pour résoudre votre problème, comme ceci:
cout << fixed;
cout << "Bas ana: " << x << "\tSon faiz: " << t << "\tSon ana: " << x+t <<endl;
Cependant, après avoir fait cela, chaque fois que vous imprimez un flottant ou un double n'importe où dans votre projet, le nombre sera toujours imprimé dans cette notation fixe. Vous pouvez le retourner en utilisant
cout << scientific;
mais cela peut devenir fastidieux si votre code devient plus compliqué.
C'est pourquoi Boost a fait l'économiseur d'état du flux d'E/S , qui renvoie automatiquement le flux d'E/S que vous utilisez à l'état qu'il était avant votre appel de fonction. Vous pouvez l'utiliser comme ceci:
#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
Vous pouvez trouver plus d'informations sur l'économiseur d'état de flux d'E/S de Boost dans les documents officiels .
Vous pouvez également consulter la bibliothèque Boost Format qui peut également faciliter votre sortie, surtout si vous devez faire face à l'internationalisation. Cependant, cela ne vous aidera pas pour ce problème particulier.
codez la syntaxe suivante:
std::cout << std::fixed << std::setprecision(n);
où (n)
est le nombre de précision décimale. Cela devrait le réparer.
Vous pouvez utiliser des indicateurs de format
Plus d'informations: http://www.cplusplus.com/reference/iostream/ios_base/fmtflags/
Il y a toute une collection d'opérateurs de formatage que vous obtenez avec iostream. Voici un tutoriel pour vous aider à démarrer.