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 :

conversion double en int


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 58
    Points : 51
    Points
    51
    Par défaut conversion double en int
    Bonjour à tous,



    Il y a un problème quand je fait la convertion d'un double en un int

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    double a=12;
    int aa=(int) a;       // je trouve aa=11
     
    double b=1;
    int bb=(int) b;       // je trouve bb=0


    Merci pour votre aide

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 382
    Points : 4 936
    Points
    4 936
    Par défaut
    il faut savoir qu'un flottant n'a pas une représentation exacte en mémoire, ce qui fait que par exemple 1.0 peut valoir en mémoire 0.999999999999 ou 1.00000000000001 selon la précision (d'où l'existence dans la bibliothèque standard de constant tel que FLT_EPS ou DBL_EPS ainsi que d'autre que j'ai plus en mémoire), d'où la cause de ton problème.

    si tu veux que 0.9999999999 devienne 1.0, il ne faut pas caster mais arrondir.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 58
    Points : 51
    Points
    51
    Par défaut
    Merci,

    Oui tu as raison je doit faire arrondissement. J'ai effectué une petite recherche sur la fonction round en c++ mais j'ai pas trouvé.

    Par contre il y a ce qui utilise floor(value + 0.5); est ce que cette fonction peut remplacer le rôle de round(value) dans tout les cas?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 382
    Points : 4 936
    Points
    4 936
    Par défaut
    là pour le coup, je ne sais pas, désolé.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 58
    Points : 51
    Points
    51
    Par défaut
    Merci pour ton aide,

    Pour le moment ca marche

  6. #6
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    sauf que 1.0 *a* une representatione xacte vu qu'il s'agit de 2^0

    1.f === 0x3F800000

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

Discussions similaires

  1. [Conversion de type] Int -> Double
    Par Compufan dans le forum Débuter
    Réponses: 2
    Dernier message: 21/07/2013, 16h13
  2. conversion double/int sans perte d'informations
    Par leelooboss dans le forum Langage
    Réponses: 5
    Dernier message: 16/11/2010, 15h11
  3. Réponses: 8
    Dernier message: 30/09/2009, 09h21
  4. Conversion double -> int, problème étrange
    Par mickael9 dans le forum C++
    Réponses: 10
    Dernier message: 20/10/2008, 03h48
  5. [FLASH MX 2004] conversion string en int.
    Par calfater dans le forum Flash
    Réponses: 3
    Dernier message: 26/05/2004, 15h00

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