Float: il ne maffiche pas 2 147 483 649!!

Fermé
missa ginsu Messages postés 2 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 27 avril 2011 - 27 avril 2011 à 00:21
boly38 Messages postés 267 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 29 septembre 2016 - 27 avril 2011 à 10:33
aidez moi a répondre a ce casse tete svp: jai écrit un programme tt bete sous gcc ( fedora 12) pr afficher des nombres entiers et réels, le probleme est que quand j'utilise le type "float" pour imprimer le nombre 2 147 483 649 il me met 2 147 483 648.000000 ? or que normalement le max sous float est 3.8x10^38 ???? je sais qu'en mettant unsigned long int ou meme double sa va me lafficher correctement! mais je voudrais comprendre qu'est ce qui c'est passé exactement et comment il a opéré pour mafficher 2 147 483 648.000000 au lieu de 2 147 483 649 ! Me répondre vite SVPPP !

1 réponse

boly38 Messages postés 267 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 29 septembre 2016 80
27 avril 2011 à 10:33
une limite a été atteinte le tout est de savoir laquelle..
peut être çà correspond à la taille max suivante présente dans dans float.h
LDBL_MAX_EXP = 16384
(google me dit) The maximum integer value for an exponent in base FLT_RADIX.
16384*16384*8 = 2 147 483 648

non sérieusement je ne sais pas non plus l'expliquer mais la réponse m'intéresse, je ne sais pas si çà a un rapport avec ces constantes limites :
http://www-personal.umich.edu/~williams/archive/computation/float-params.txt

petite question : 2 147 483 649 est il calculé au sein du programme ? son mode de calcul est peut être une réponse?...
0