Précision des critères avec ostringstream

Précision des critères avec ostringstream

par Martin Samuel Rollet,
Number of replies: 1

Bonjour,

Pour l'affichage des critères, j'utilise un unique ostringstream pour les trois nombres, comme ceci :

ostringstream data;

data << fixed;

data << setprecision(4);

data << "ENJ: " << enj << endl;

data << defaultfloat;

data << "CI: " << ci << endl;

data << "MTA: " << mta << endl;

Le problème est que si j'ai par exemple une valeur de 181.931 pour mta, il est affiché seulement 181.9. Ce n'est pas le cas si aucune précision n'est donnée avant (on supprime fixed et setprecision).
Pourtant, defaultfloat devrait remettre à zéro le ostringstream (voir ce lien)... Y a-t-il une solution pour bien retourner à la configuration initiale du stringstream après lui avoir affecté une précision ? Est-ce obligé de faire un second stringstream sans précision du tout ?

Merci d'avance
In reply to Martin Samuel Rollet

Re: Précision des critères avec ostringstream

par Ronan Boulic,

le programme de démo utilise le mécanisme de format automatiquement mis en place par ostringstream pour mta et ci comme dans les exemples visibles sur la page dont vous avez fourni le lien:

https://thispointer.com/c-convert-double-to-string-and-manage-precision-scientific-notation/

ex: oss étant un ostringstream

oss << mta ;

ne passez pas de temps à mettre en place des mécanismes supplémentaires qui auraient pour conséquence d'avoir un affichage moins précis que le mécanisme automatique par défaut.

pour enj il y a un ajustement cosmétique qu'on ne vous demande pas de reproduire ; concentrez-vous sur l'affichage de la valeur correcte de enj.