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 :

[setprecision] dans une fonction C++


Sujet :

C++

  1. #1
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut [setprecision] dans une fonction C++
    Bonjour à tous,
    Je voulais savoir s'il était possible de limiter la précision d'un float à un chiffre après la virgule dans une fonction seulement, et pas pour des flux d'entrée sortie...
    C'est juste pour un calcul !

    MERCI !

  2. #2
    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 poukill
    Bonjour à tous,
    Je voulais savoir s'il était possible de limiter la précision d'un float à un chiffre après la virgule dans une fonction seulement, et pas pour des flux d'entrée sortie...
    C'est juste pour un calcul !

    MERCI !
    Si j'ai bien compris non. En fait les calculs intermediaires peuvent etre meme fait avec une precision superieure a celle des flottants employes.

    De plus, les flottants ont une precision relative fixee, cad qu'il faut plutot reflechir en nombres de chiffres significatifs plutot qu'un chiffre apres la virgule.

    Enfin, les formats sont generalement binaires, donc les chiffres en question sont des bits, pas des chiffres decimaux.

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    De plus, les flottants ont une precision relative fixee, cad qu'il faut plutot reflechir en nombres de chiffres significatifs plutot qu'un chiffre apres la virgule.
    OK, mais alors comment "enlever" des chiffres des chiffres qui ne sont pas significatifs!
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    float coeff_mul = 0.5*( LARGEUR_ECRAN / IR.dimx() );
    
    cette ligne de code là me donne 0.5 car IR.dimx() est entier, il me renvoi donc le quotient...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float coeff_mul = 0.5*( float(LARGEUR_ECRAN) / float(IR.dimx() ));
    me renvoi 0.6000002, une précision qui me donne des bugs par la suite!

    Comment tronquer?

  4. #4
    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 poukill
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float coeff_mul = 0.5*( float(LARGEUR_ECRAN) / float(IR.dimx() ));
    me renvoi 0.6000002, une précision qui me donne des bugs par la suite!

    Comment tronquer?
    Citation Envoyé par Jean-Marc.Bourguet
    Enfin, les formats sont generalement binaires, donc les chiffres en question sont des bits, pas des chiffres decimaux.
    Un nombre comme 0.6 n'est pas representable exactement avec des flottants binaires (tout comme 1/3 n'est pas representable exactement avec une forme decimale). Il est vraissemblable que coeff_mul est le flottant le plus proche de 0.6.

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Il est vraissemblable que coeff_mul est le flottant le plus proche de 0.6.
    Ca j'en suis convaincu! il es aussi probable que "double" me trouve un nombre plus proche de 0.6 que ce coeff_mul, mais hélas ceci ne résoudra pas mes problèmes de conditionnement.

    Je pense alors que le mieux est de stocker 6 dans un entier, et de savoir qu'il est dix fois plus grand sa vraie valeur...

    Merci Jean-Marc

  6. #6
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut
    Citation Envoyé par poukill
    Ca j'en suis convaincu! il es aussi probable que "double" me trouve un nombre plus proche de 0.6 que ce coeff_mul, mais hélas ceci ne résoudra pas mes problèmes de conditionnement.

    Je pense alors que le mieux est de stocker 6 dans un entier, et de savoir qu'il est dix fois plus grand sa vraie valeur...

    Merci Jean-Marc
    Ou alors t'utilises des rationnels .

  7. #7
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    c'est tout à fait vrai ! J'essaie de faire autrement pour l'instant, mais je pourrai bien y venir!

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

Discussions similaires

  1. Recuperation de formulaire dans une fonction
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 23/06/2004, 15h04
  2. Transmission d'un objet crée dans une fonction
    Par EvilAngel dans le forum ASP
    Réponses: 2
    Dernier message: 10/05/2004, 20h19
  3. Utilisez MinimizeName() dans une fonction
    Par James_ dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/05/2004, 18h05
  4. [Postgresql]Connecter à une autre base dans une fonction
    Par alex2205 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/05/2003, 11h30
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

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