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 :

Masquer les zeros inutiles d'un flottant (exercice de programmation)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Tests et Validations
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur Tests et Validations
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut Masquer les zeros inutiles d'un flottant (exercice de programmation)
    Bonjour Messieurs Dames,

    j'ai un exercice à faire dont l'énoncé est :

    Réalisez un programme demandant deux nombres flottants.
    Il affichera la valeur absolue de ces deux nombres,
    leurs racines carrées, la valeur du nombre 1 avec pour exposant le nombre 2.
    Il donnera aussi le cosinus ,le sinus et la tangente de ces nombres.
    Étudiez le prototype des fonctions floor et ceil .


    En gros c'est ça.

    Mon programme est prêt et fonctionnel.
    Malheureusement je n'aime pas l'affichage.
    Admettons que j'entre 5.2 pour le premier nombre , mon logiciel m'affichera 5.2000000 , et ça , c'est moche.
    Dans la mesure où ma calculatrice TI 82 est capable de supprimer ces 0 inutiles ,je suis convaincu que je peux faire pareil.

    Les fonctions floor et ceil me permettent d'arrondir .Mais 5.2 ,par exemple ,est une valeur exacte. Elle n'a donc pas besoin d'être arrondi.


    Alors, c'est comment qu'on fait ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 444
    Par défaut
    Bonjour et bienvenue,

    Citation Envoyé par Alexcfai Voir le message
    Les fonctions floor et ceil me permettent d'arrondir .Mais 5.2 ,par exemple ,est une valeur exacte. Elle n'a donc pas besoin d'être arrondi.
    Hélas ! Elle ne l'est pas en binaire ! :-)

    5,2d = 101,001100110011001100110011…b

    La bibliothèque du C va donc bel et bien procéder à un arrondi en interne et tâcher de te l'afficher du mieux qu'elle le peut. Par contre, il n'est pas normal que dans des conditions ordinaires, tu obtiennes ce genre de résultat. Montre-nous ton code ici (avec les balises [code] et [/code]) et nous tâcherons de t'aider.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur Tests et Validations
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur Tests et Validations
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #include <stdio.h>
    #include <math.h>
    int main()
    {
        double a,b;
     
        printf("Veuillez entrer deux nombres a virgules\nNombre 1\n");
        scanf("%lf",&a);
        printf("Nombre 2\n");
        scanf("%lf",&b);
     
     
            printf("\nLa valeur absolue de %lf =  %lf\nLa valeur absolue de %lf = %lf",a,fabs(a),b,fabs(b));
     
                putchar(10);
     
            printf("\n%lf ^ %lf = %g",a,b,pow(a,b));
     
                putchar(10);
     
     
            if (a<0) printf("\nLa racine carre de %lf n'a pas de solution reelle",a);
            else printf("\nLa racine carre de %lf est %lf",a,sqrt(a));
     
            if (b<0) printf("\nLa racine carre de %g n'a pas de solution reelle",b);
            else printf("\nLa racine carre de %lf est %lf",b,sqrt(b));
     
                putchar(10);
     
            printf("\nLe cosinus de %lf est:%lf",a,cos(a));
            printf("\nLe sinus de %lf est:%lf",a,sin(a));
            printf("\nLa tangente de %lf est:%lf",a,tan(a));
     
                putchar(10);
     
            printf("\nLe cosinus de %lf est:%lf",b,cos(b));
            printf("\nLe sinus de %lf est:%lf",b,sin(b));
            printf("\nLa tangente de %lf est:%lf",b,tan(b));
     
                putchar(10);
     
        return 0;
    }

    En image ça donne :
    Nom : fenetre ex 12.jpg
Affichages : 356
Taille : 52,1 Ko

    Merci de ton aide

  4. #4
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    868
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 868
    Par défaut
    Si tu parles de limiter le nombre de chiffres après la virgule avec printf, il te faudra utiliser le flag adapté. De mémoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("\nLa valeur absolue de %.2lf =  %.2lf\nLa valeur absolue de %.2lf = %.2lf",a,fabs(a),b,fabs(b));
    Tu n'auras plus que 2 chiffres après la virgule. Lis le man de printf pour plus d'infos.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Tests et Validations
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur Tests et Validations
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    Merci pour cette réponse mais je connaissais cette possibilité.
    Le souci avec ça c'est que, admettons j'obtienne une valeur exact du genre 5.367200000 . Si j'utilise %2lf l'écran m'affichera 5.37( ou 5.36) ce qui est un arrondi ( ou une troncature).

    Or, je ne voudrais pas me séparer de valeurs exactes.
    Je préfèrerais que mon programme m'affiche 5.3672 ( puisque les chiffres suivants , les 0, ne servent à rien).

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    c'est possible, lis la documentation complete et précise.

Discussions similaires

  1. Masquer les en-têtes et cellules inutiles
    Par Invité dans le forum Excel
    Réponses: 16
    Dernier message: 25/06/2014, 11h50
  2. Comment enlever les zeros inutiles d'un float
    Par Skorpyon69 dans le forum C
    Réponses: 18
    Dernier message: 04/12/2006, 21h08
  3. TMediaPlayer : masquer les boutons par programme
    Par gerardTar dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/07/2005, 22h15
  4. Enlever les espaces inutiles d'un AnsiString
    Par jamesb dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/01/2005, 12h40
  5. masquer les tables système
    Par jbat dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/05/2004, 12h51

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