C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

format d'affichage

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
AG
Guest





PostPosted: Mon Apr 16, 2007 2:20 pm    Post subject: format d'affichage Reply with quote



Bonjour,

je porte un programme sous linux, et pour vérifier, j'affiche des
valeurs, résultat d'une execution sous Windows, et Linux.

Sauf que pour afficher un double en mode scientifique, Sous linux j'ai
deux chiffres pour l'exposant, alors que sous Windows, j'en ai trois :

version Windows : -3.63376e+000
version Linux : -3.63376e+00

C'est pas pratique parce que mon comparateurs de fichier ne sait pas
que c'est en fait la même chose. D'ou ma question : est-il possible de
controler le nombre de chiffre utilisé pour l'affichage de l'exposant
?

template<class T>

ostream & operator<<(ostream & out, vector<T> & v)

{

typename vector<T>::iterator i;

for(i=v.begin();i!=v.end();i++)

{

out.setf(std::ios::scientific);

out.precision(PRECISION_AG);

out << setw(NB_DIGIT_AG) << *i << " ";

}

return out;

}



Merci,



AG.
Back to top
AG
Guest





PostPosted: Mon Apr 16, 2007 2:29 pm    Post subject: Re: format d'affichage Reply with quote



Aprés avoir cherché, j'ai l'impression que ça n'est pas possible. J'ai
bon ? Le seul moyen c'est de refaire du formattage par-dessus, en
convertissant le double en chaine de caractère, et en la modifiant de
la manière que l'on veut ?

AG.
Back to top
James Kanze
Guest





PostPosted: Mon Apr 16, 2007 6:19 pm    Post subject: Re: format d'affichage Reply with quote



On Apr 16, 11:20 am, "AG" <a...@tb.fr> wrote:

Quote:
je porte un programme sous linux, et pour vérifier, j'affiche des
valeurs, résultat d'une execution sous Windows, et Linux.

Sauf que pour afficher un double en mode scientifique, Sous linux j'ai
deux chiffres pour l'exposant, alors que sous Windows, j'en ai trois :

version Windows : -3.63376e+000
version Linux : -3.63376e+00

C'est une erreur connue de VC++. La norme dit qu'il faut avoir
toujours deux, sauf quand il en faut plus pour représenter la
valeur.

Quote:
C'est pas pratique parce que mon comparateurs de fichier ne
sait pas que c'est en fait la même chose. D'ou ma question :
est-il possible de controler le nombre de chiffre utilisé pour
l'affichage de l'exposant ?

Contrôler, non, mais le nombre en est bien défini. Seulement, tu
as un problème parce qu'un des compilateurs n'est pas conforme.
Parmi les solutions possibles :

-- Changer de compilateur sous Windows, pour un qui est
conforme.

-- Générer la conversion de double vers une chaîne, d'où tu
ôtes le caractère en trop, s'il s'y trouve.

-- Modifier l'outil qui fait la comparaison, de façon à ce
qu'il traite les deux chaînes comme égales.

Tu pourrais aussi essayer une chose tout simple : passer le
fichier de sortie de ta verion Windows à travers un script du
genre :
sed 's:\([Ee][+-]*\)0\([0-9][0-9]\):\1\2:g'
(Chez moi, j'ai de toute façon prèsque toujours besoin des
scripts de ce genre ; mes fichiers contiennent des dates et des
heures, qu'il ne faut pas comparer.)

--
James Kanze (GABI Software) email:james.kanze (AT) gmail (DOT) com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.