2011-12-12 2 views
0

Voici quelques "pseudo" C++ CodeCout double sans variables coupe

double var = 5.5; 
cout << var << endl; 
double var2 = 6.0; 
cout << var2 << endl; 

5.5 
6 

Le problème est que certains code peut attendre à ce qu'il est 6.0. Est-ce que quelqu'un a une idée comment changer le flux de sortie.

Bon est un code d'exemple ici j'ai essayé

double t = 6.0; 
    while (t > 0.1) { 
    t = t - 0.1; 
    cout << setprecision(2) << t << endl; 
    } 

La sortie est

5.9 
5.8 
... 
5.2 
5.1 
5 
4.9 
4.8 
4.7 

Répondre

4

Utilisation std::setprecision avec std::fixed:

std::cout << std::fixed << std::setprecision(1) << var2 << std::endl; 

Voir la démo: http://ideone.com/Arz85

Seul std::setprecision(1) ne fonctionnerait pas. Vous devez également utiliser std::fixed.

Ne pas oublier d'inclure ceci:

#include <iomanip> 

Je suppose que vous avez écrit using namespace std dans votre code. Si oui, alors ne faites pas ça. Écrire des noms pleinement qualifiés, tels que std::cout, au lieu de cout. Voir ces sujets:

+0

Merci cela fait. Surtout le fixe() était important! –

+0

Je suis d'accord sur le fait que l'utilisation de namespace std est mauvaise ici, mais cela aide vraiment de pouvoir lire le code, du moins de mon point de vue. –

0

Utilisez ios_base drapeaux, jetez un oeil à la reference C++.