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 :

printf avec %g


Sujet :

C

  1. #1
    Membre éclairé
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Par défaut printf avec %g
    Bonjour,

    J'utilise beaucoup le printf avec l'argument %g plutôt que %d ou %f ou autre car il a l'avantage de automatiquement enlever les chiffres après la virgule si ceux ci sont nuls.

    Pourtant, je me trouve maintenant confronté à un problème. Je voudrais en fait pouvoir afficher:

    n = 10 si n = 9,98
    n = 9,9 si n = 9,93

    En gros je veux faire un arrondi au premier chiffre après la virgule et supprimer celui-ci si il est nul. Et je ne sais pas quoi mettre comme argument. Quelqu'un a une idée?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <stdio.h>
     
    main()
    {
      printf("%.1f\n",9.98);
      printf("%.1f\n",9.93);
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    E:\home\test>gcc test.c
     
    E:\home\test>a.exe
    10.0
    9.9
     
    E:\home\test>
    A bientot.

  3. #3
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 380
    Billets dans le blog
    1
    Par défaut Re: printf avec %g
    Korta, ta solution ne répond pas à son problème car tu forces l'affichage d'une décimale alors que lui voudrait qu'elle gicle.

    La solution consiste à arrondir ton réel avant de l'afficher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <math.h>
    #include <stdio.h>
     
    double arrondir_a_une_decimale(double f)
    {
      return floor((f * 10.0) + 0.5) / 10.0;
    }
     
    int main()
    {
      printf("%g", arrondir_a_une_decimale(9.93));
      printf("%g", arrondir_a_une_decimale(9.98));
      return 0;
    }

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Par défaut Re: printf avec %g
    Citation Envoyé par Anomaly
    Korta, ta solution ne répond pas à son problème car tu forces l'affichage d'une décimale alors que lui voudrait qu'elle gicle.

    La solution consiste à arrondir ton réel avant de l'afficher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <math.h>
    #include <stdio.h>
     
    double arrondir_a_une_decimale(double f)
    {
      return floor((f * 10.0) + 0.5) / 10.0;
    }
     
    int main()
    {
      printf("%g", arrondir_a_une_decimale(9.93));
      printf("%g", arrondir_a_une_decimale(9.98));
      return 0;
    }
    CORRECT, merci de m'avoir corrigé, j'ai mal lu le post original !!!
    Ton idée est tres bonne et fonctionne tres bien,; MEA CULPA et gloire a toi pour ta solution!
    A bientot

  5. #5
    Membre éclairé
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Par défaut
    Merci à vous deux.

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

Discussions similaires

  1. Printf avec des __int64
    Par ceugniet dans le forum Débuter
    Réponses: 6
    Dernier message: 23/11/2012, 19h41
  2. Réponses: 8
    Dernier message: 18/04/2011, 14h46
  3. Incomprhension d'une commande printf avec valeur interdite
    Par NaNaR32 dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 06/06/2009, 21h00
  4. colorer un printf avec dev c++ dans la console
    Par masterix59 dans le forum C
    Réponses: 13
    Dernier message: 17/12/2006, 17h20
  5. problème d'affichage avec printf
    Par sorari dans le forum C++
    Réponses: 12
    Dernier message: 08/03/2005, 18h30

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