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

Langage C++ Discussion :

double max vs long long max


Sujet :

Langage C++

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut double max vs long long max
    Bonjour,

    je suis surpris que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	auto s = std::numeric_limits<double>::max();
    	auto s2 = std::numeric_limits<long long>::max();
    les deux étant sur comment expliquer ça ?

    la valeur max pour une variable de 8 octets et (2^64-1)/2

    un double à une mantisse de 52 bits 11 bits d'exposant 1 bit de signe et encode les nombres sous la forme mantisse*2^(exposant-1023), pour sa valeur max tous les bits de mantisse et expossant valent 1, (peut être pas tous car tous à 1 de mémoire signifie une valeur spécial)

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juillet 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 8
    Points : 12
    Points
    12
    Par défaut
    C'est normal.
    Si tu regardes http://en.cppreference.com/w/cpp/language/types le max d'un long long est de l'ordre de 9,2 · 1018 alors qu'un double suit la norme IEE754 et son max est de l'ordre de 1,8· 10308.

    La représentation des deux nombres est différente aussi pour que la comparaison soit possible (long long vs double). Il y a un cast implicit du long long en double avec perte de précision sur le long long.

  3. #3
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Citation Envoyé par guillaume07 Voir le message
    un double à une mantisse de 52 bits 11 bits d'exposant 1 bit de signe
    Tout à fait, ce qui fait que le plus grand double représentable est --- à quelques ordres de grandeurs près --- de 2^1024 soit 10^309 (approx. ln(10)/ln(2)=3,3). Mais si le double peut représenter de plus grandes valeurs, il perd en précision passé une certaine valeur. Ça se calcule, il existe N tel que tout double supérieur à N soit éloigné du double qui le succède de plus de 1. Tous les entiers inférieurs à std::numeric_limits<double>::max() ne sont pas représentables.
    -- Yankel Scialom

Discussions similaires

  1. décallage sur long long int
    Par trax44 dans le forum C
    Réponses: 9
    Dernier message: 26/02/2006, 11h41
  2. comment afficher un long long ?
    Par HRS dans le forum C
    Réponses: 2
    Dernier message: 14/02/2006, 02h05
  3. Réponses: 6
    Dernier message: 06/12/2005, 16h54
  4. Réponses: 1
    Dernier message: 04/04/2005, 11h19
  5. DBLink et types LONG/LONG RAW
    Par bchristo dans le forum Administration
    Réponses: 7
    Dernier message: 28/04/2004, 12h46

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