IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Définition du nombre de décimale conversion double =>char


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    ingénieur
    Inscrit en
    Mai 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 45
    Points : 46
    Points
    46
    Par défaut Définition du nombre de décimale conversion double =>char
    Bonjour,

    Je dois convertir un fichier texte en fichier XML.

    J'utilise LIBXML2, C++, Visual Studio 2003.

    Lors de l'écriture du fichier XML, je convertis plusieurs variables de type double en char :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char	Param1[100],Param2[100],Param3[100],Param4[100],Param5[100];
    	//Conversion  en char
    	sprintf(Param1,"%1.1f",m_Parametre1);
    	sprintf(Param2,"%1.1f",m_Parametre2);
    	sprintf(Param3,"%1.1f",m_Parametre3);
    	sprintf(Param4,"%1.1f",m_Parametre4);
    	sprintf(Param5,"%1.1f",m_Parametre5);
    	xmlNewTextChild(pThisNode,NULL,(xmlChar*)XML_TAG_PARAM1,(xmlChar*)Param1);
    xmlNewTextChild(pThisNode,NULL,(xmlChar*)XML_TAG_PARAM2,(xmlChar*)Param2);
    xmlNewTextChild(pThisNode,NULL,(xmlChar*)XML_TAG_PARAM3,(xmlChar*)Param3);	xmlNewTextChild(pThisNode,NULL,(xmlChar*)XML_TAG_PARAM4,(xmlChar*)Param4);
    xmlNewTextChild(pThisNode,NULL,(xmlChar*)XML_TAG_PARAM5,(xmlChar*)Param5);
    Ce qui me donne une série de balise de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <Parametre_1>0.0</Parametre_1>
    <Parametre_2>0.0</Parametre_2>
    <Parametre_3>0.0</Parametre_3>
    <Parametre_4>0.0</Parametre_4>
    <Parametre_5>0.0</Parametre_5>

    Or, parfois mes parametres prennent des valeurs très petites à plusieurs décimales, style 0.000005.
    Et vu qu'en faisant la conversion en char je limite à 1.1f (une seule décimale) mon parametre en sortie affiche zero.
    Je voudrais donc pouvoir afficher autant de décimale que possible lorsque c'est nécessaire.

    La solution simple serait de mettre "%1.10f" pour toutes les conversions mais pour une raison de lisibilité du fichier XML je ne préfère pas !

    Donc si mon parametre1 dans mon fichier texte est 1.7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Parametre_1>1.7</Parametre_1>
    si le parametre 4 prend 0.005, je veux qu'il s'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Parametre_1>0.005</Parametre_1>
    mais s'il prend la valeur 0.4, je veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Parametre_1>0.4</Parametre_1>
    et pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Parametre_1>0.400</Parametre_1>

    Avez vous une solution à me proposer ? est-ce possible ?

  2. #2
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Je ne comprends pas ton histoire de conversion d'un double vers un char (entier compris entre -128 et 127 et pas de virgule)

  3. #3
    Membre du Club
    Homme Profil pro
    ingénieur
    Inscrit en
    Mai 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par oxyde356 Voir le message
    Je ne comprends pas ton histoire de conversion d'un double vers un char
    pour utiliser la fonction xmlNewTextChild je dois entrer une chaine de caractère .. je n'ai trouvé que la parade sprintf pour entrer la valeur de mon double.

    mais si tu as mieux je suis preneur !

  4. #4
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    stringstream param1;
    param1 << m_Parametre1;
    xmlNewTextChild(pThisNode,NULL,(const xmlChar*)XML_TAG_PARAM1,(const xmlChar*)param1.str().c_str());

  5. #5
    Membre du Club
    Homme Profil pro
    ingénieur
    Inscrit en
    Mai 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    Ah super, je ne connaissais pas stringstream ...

    juste une chose: ne pas oublier d'inclure <sstream> !

    Et encore une chose:

    j'ai un parametre dans mon fichier texte qui vaut 1 00 000.

    dans mon fichier XML il est écrit 1e+006

    Comment puis-je forcer l'écriture en nombre non-scientifique ?

  6. #6
    Membre du Club
    Homme Profil pro
    ingénieur
    Inscrit en
    Mai 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    Personne ne saurait comment afficher la valeur correctement s.v.p. ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Il faut que tu regarde du coté des manipulateur de flux (en-tête iomanip), voir ici, la rubrique Floating-point format flags ("floatfield" flags) devrait t'intéresser

  8. #8
    Membre du Club
    Homme Profil pro
    ingénieur
    Inscrit en
    Mai 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    Merci Joe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2000] Conversion en un nombre à 2 décimales
    Par moustika dans le forum Access
    Réponses: 2
    Dernier message: 01/04/2011, 19h49
  2. Réponses: 1
    Dernier message: 17/06/2009, 19h18
  3. Conversion double binaire vers décimal
    Par mess-mate dans le forum C++
    Réponses: 17
    Dernier message: 07/12/2008, 01h44
  4. Connaître la nombre de décimales d'un Double
    Par gids01 dans le forum Langage
    Réponses: 3
    Dernier message: 03/07/2007, 11h48
  5. [débutant] définition du nombre de décimales dans une requête
    Par a2line dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/12/2006, 22h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo