OVH Cloud OVH Cloud

Problèmes avec setprecision

2 réponses
Avatar
Oodini
Bonjour,

Quand j'utilise setprecision dans une boucle pour afficher une valeur,
comme dans:

while ( )
...
cout << valeur << setprecision(2) << fixed << endl;
...

La première itération ne prend aps en compte les manipulations de flux.
Le formatage n'apparaît qu'à partir de la seconde itération.

J'utilise g++.

Merci.

2 réponses

Avatar
Anthony Fleury
Oodini wrote:

Bonjour,


bonjour,

Quand j'utilise setprecision dans une boucle pour afficher une valeur,
comme dans:

while ( )
...
cout << valeur << setprecision(2) << fixed << endl;
...

La première itération ne prend aps en compte les manipulations de flux.
Le formatage n'apparaît qu'à partir de la seconde itération.


C'est tout à fait normal, il faut changer l'état du flux AVANT d'utiliser ce
flux. En gros, faut faire l'appel à setprecision() avant d'afficher la
moindre valeur. Le setprecision() qui est ici ne s'applique pas sur la
ligne, il s'applique à partir du point où il est appelé. Comme l'affichage
de valeur est avant ce point, le premier affichage de valeur se fait mal.

Si jamais il n'y a pas d'autres manipulations du stream dans les ..., il est
possible de faire :

cout << setprecision(2) << fixed;
while( ... )
{
...
cout << valeur << endl;
...
}

Sinon il faut faire :

while (...)
{
...
cout << setprecision(2) << fixed << valeur << endl;
...
}

--
Anthony Fleury

Avatar
Oodini

Sinon il faut faire :

while (...)
{
...
cout << setprecision(2) << fixed << valeur << endl;
...
}


OK, merci beaucoup ! :-)