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 de float


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Probleme de float
    Bonjour,

    je bute de manière pas tres maline sur un probleme pas tres fin.
    voici les quelques lignes de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    float test=197444*197444;
    cout<<"test vaut : "<<test<<endl;
    J'ai (grace au compilo gcc) une erreur : debordement d'entier dans l'expression.
    Pourtant, 197444*197444, ca fait qu'a peu pres 4*10^10, ce qui me parait peu par rapport au 10^38 que peux stocker un float.

    Deuxieme question, dans la suite j'opere une division en fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float test=197444*197444/906256;
    Mais pour eviter le depassement (que je ne comprends pas), j'ai tenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    float test=197444/906256;
    test*=197444;
    Je trouve a la sortie test=0, cad que ma division donne 0 malgré la précision attendue du float...

    Quelqu'un qui pourrait m'expliquer ces deux points?
    Merci d'avance

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Pour comprendre ce qu'il se passe il faut que tu saches qu'en C++, comme dans beaucoup de langages, les constantes sont typées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    123    (int)
    123u   (unsigned)
    123l   (long)
    123ul  (unsigned long)
    123.0f (float)
    123.0  (double)
    123.0l (long double)
    Donc lorsque tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float test=197444*197444;
    il s'agit d'une multiplication entière, puis d'une conversion en float.

    Pareil ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float test=197444/906256;
    il s'agit d'une division entière dont le résultat vaut l'entier 0, ensuite converti en float.

    Pour effectuer les opérations en flottant il suffit d'utiliser les constantes flottantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float test=197444.0f/906256.0f;
    A noter qu'en général, on n'utilise pas le type float, mais le type double qui offre une meilleure précision et dont les constantes s'écrivent plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double test = 197444.0/906256.0;

  3. #3
    Invité
    Invité(e)
    Par défaut
    merci !

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

Discussions similaires

  1. Probleme de float/double
    Par serebei251 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 24/05/2008, 20h25
  2. probleme de float
    Par hamster. dans le forum Général Java
    Réponses: 2
    Dernier message: 03/01/2008, 13h53
  3. probleme avec float et GetDlgItemText
    Par nanettemontp dans le forum Windows
    Réponses: 2
    Dernier message: 02/10/2007, 08h42
  4. probleme saisi float
    Par dude666 dans le forum C
    Réponses: 7
    Dernier message: 29/09/2006, 22h07
  5. Problème avec float sous Mysql
    Par adgabd dans le forum Bases de données
    Réponses: 1
    Dernier message: 22/09/2006, 10h52

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