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 :

Précision d'un réel


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Précision d'un réel
    Bonjour,

    Je voudrais savoir comment tronquer les 0.. d'un réel à sa propre précision ?
    C'est à dire, ne pas afficher les 0 en trop !

    J'ai cherché dans le Man, et dans la Faq, mais sans succés !
    Voiçi ce que j'ai tenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf("%.5lf", var); // Ne me convient pas car on doit donner la précision
    printf("%.lf", var);  // Le nombre est tronqué et apparait comme un entier !

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    A mon avis, la seule façon de faire est d'écrire dans une chaîne de caractères avec un sprintf puis tu explores ta chaîne par la fin en virant les zéros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char *tmp;
    sprintf(ma_chaine, "%.lf", mon_nombre);
    tmp = ma_chaine + strlen(ma_chaine) - 1;
    while (tmp >= ma_chaine && *tmp == '0')
      *tmp-- = 0;
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    je pense que même en virant les zéro dans la chaine de caractère, il apparaîtrons lors de l'affichage.

    La seule autre solution que je vois est très lourde. On part de l'idée proposée par Trap D. Tu recrée une fonction printf et tu comptes le nombre de zéro en utilisant une chaine de caractère, puis tu appeles ensuite le printf adapté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    void MonPrintf(double d)
    {
    Comptage des zéros ;
     
    switch ( nbzero )
        {
         case 0 : printf("%lf", ...) ; break ;
         case 1 : printf("%5f", ...) ; break ;
         case 2 : printf("%4f", ...) ; break ;
         }
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    ToTo13 >> Après le travail fait sur la chaine, on l'affiche avec un printf("%s", ma_chaine); Je ne vois pas trop comment ils peuvent réapparaître.
    Fatigué en fin de semaine ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Invité
    Invité(e)
    Par défaut
    Pas de formattage ? C'est bien dommage !
    Mais je vais essayer vos technique !

    Merçi à vous !

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par guimers
    Bonjour,

    Je voudrais savoir comment tronquer les 0.. d'un réel à sa propre précision ?
    C'est à dire, ne pas afficher les 0 en trop !
    choisit entre les formats f et e d'une part et d'autre part supprime les 0 finaux.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Oh merçi !!! merçi !!!!
    Je t'aime !!!

    heu..
    merçi !

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

Discussions similaires

  1. Hexadécimal, réel à double précision
    Par takatik dans le forum Général Java
    Réponses: 2
    Dernier message: 15/11/2014, 15h04
  2. VESA - Mode réel / protégé / EMS-XMS
    Par zdra dans le forum x86 16-bits
    Réponses: 35
    Dernier message: 21/08/2010, 10h39
  3. nombre réels -simple et double précision
    Par new_wave dans le forum Langage
    Réponses: 7
    Dernier message: 12/11/2009, 23h34
  4. Modifcation de la précision d'affichage d'un nombre réel
    Par developpeur82 dans le forum MATLAB
    Réponses: 2
    Dernier message: 13/04/2007, 12h33
  5. Réponses: 17
    Dernier message: 04/08/2005, 14h49

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