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 :

Probleme d'arrondi...


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 10
    Par défaut Probleme d'arrondi...
    Bonjour a tous...

    j'ai grand besoin de votre aide...
    En effet, j'ai un souci avec les flottants.
    Je travaille sur une calculatrice en GTK : Pour effectuer mon calcul, je recupere un label, jeffectue le calcul et je remet le resultat dans le label.

    Mon probleme c'est que les nombre ne colle pas vraiment. Par exemple :
    26.3+32.5
    (Je clique sur = et jobtient dans na console grace au printf de mon code...)
    operande1 : 26.299999
    operateur + : +
    operande2 : 32.500000
    Add, res = 58.799999

    et dans mon label : 58.799999

    Ceci sachant que j'ai deja essayer d'arrondir a laide de cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    float Arrondi(const float x){
     
    	if (0<=x){
     
    		return floor(x+0.000005);
     
    	}else{
     
    		return ceil(x-0.000005);
     
    	}
     
    }

    Ce que je souhaite au final c'est le bon resultat avec de chiffre apres la virgule... Si quelqu'un a une idee pour me depanner, ce serait super sympa... merci !!!

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut, essaye de voir du côté de la fonction round() dans <math.h>

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 9
    Par défaut
    Sinon c'est juste au niveau de l'affichage tu peux écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%.2lf",variable);

  4. #4
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 10
    Par défaut
    Merci pour vos reponse Gruik et Chronos7...

    J'avais deja tenter le round()... mais sans succes !
    Par contre, le "%.2lf" je connaissais pas et sa m'a ete d'une grande utilite pour l'affichage.
    Mais le probleme persistait et j'ai donc convertit mes float en double... Et la magie, ca roule !!!

    Encore merci.

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Paulinlemalin
    Mais le probleme persistait et j'ai donc convertit mes float en double... Et la magie, ca roule !!!

    Encore merci.
    Tout ce qui est calcul doit être fait en double.

    float ne sert qu'au stockage de masse si nécessaire, en sachant qu'il y aura perte de précision...

  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 Paulinlemalin
    Mais le probleme persistait et j'ai donc convertit mes float en double... Et la magie, ca roule !!!
    Si tu as des problemes d'arrondi en float, tu en as en double mais ils sont moins visibles si tu n'augmentes pas le nombre de decimales affichees.

    Les formats de flottants couramment utilises (que ce soit float ou double) ne permettent pas de representer exactement un nombre comme 29.3, que ce soit visible a l'affichage ou pas.

Discussions similaires

  1. [C++.NET] Comment résoudre un problème d'arrondi avec Single ?
    Par KaeRZed dans le forum Framework .NET
    Réponses: 7
    Dernier message: 18/09/2007, 09h08
  2. [SQLServer2K]probleme d arrondi
    Par Knightrider76 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/08/2007, 12h28
  3. Probleme d'arrondi sous interbase
    Par nah_wah dans le forum InterBase
    Réponses: 1
    Dernier message: 28/02/2007, 17h37
  4. Fortran vers VBA : problème d'arrondi
    Par sun19 dans le forum Fortran
    Réponses: 4
    Dernier message: 23/11/2006, 17h01
  5. probleme d'arrondi
    Par Chichi dans le forum Access
    Réponses: 6
    Dernier message: 24/04/2006, 22h46

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