Tout les nombres « décimaux » de sont pas encodables en nombre flottant binaires.
Ici, python encode en « flottant binaire » (probablement du IEEE754 binary64) l’expression décimale tapée sur la ligne de commande, puis affiche en retour, une représentation décimale proche de ce qui est réellement encodé, tout en garantissant un nombre maximal de « digits ».
Car contrairement a ce que j’ai précédemment écrit, il est possible de représenter, de façon exacte, en décimal, tout nombre représenté de façon exacte en « flottant binaire ». Mais cela peut nécessiter un grand nombre de « digits »:
Exemple de conversions :
Conversion de: -4.7233169650e+4
Bien Vu Denis : «Le fait de se sentir submergé par la complexité d'un code, d'un framework ou d'une API n'est pas un signe avant-coureur d'un futur abandon, c'est la toute première étape du processus d'apprentissage. Remplacer ce moment, certes pas forcément agréable mais bel et bien nécessaire, par un copier-coller bien arrangeant... Là est […]
«L'internet est mort ? Non. La seule chose qui est en train de mourir, ce sont les cancers capitalistes comme les GAFAMs qui se sont greffés dessus pour extraire un maximum de "valeur" pour les actionnaires.» — Permalink
Historique des tags d'un projet git (avec les dates) git for-each-ref --sort=creatordate \ --format '%(creatordate:short) %(refname:short)' \ refs/tags — Permalink
Tout les nombres « décimaux » de sont pas encodables en nombre flottant binaires.
Ici, python encode en « flottant binaire » (probablement du IEEE754 binary64) l’expression décimale tapée sur la ligne de commande, puis affiche en retour, une représentation décimale proche de ce qui est réellement encodé, tout en garantissant un nombre maximal de « digits ».
Car contrairement a ce que j’ai précédemment écrit, il est possible de représenter, de façon exacte, en décimal, tout nombre représenté de façon exacte en « flottant binaire ». Mais cela peut nécessiter un grand nombre de « digits »:
Exemple de conversions :
Conversion de: -4.7233169650e+4
Signum bit ‘-‘.
–> -0x###p#
Reste: 4.7233169650e+4
Choix de la base : 2^15 = 32768 –> p15
–> -0x1.###p15
Reste: 14465.16965
Décomposition:
> 2^14 = 16384 –> 0 »
> 2^13 = 8192 –> 1 (reste 6273.16965)
> 2^12 = 4096 –> 1 (reste 2177.16965)
> 2^11 = 2048 –> 1 (reste 129.16965)
> 2^10 = 1024 –> 0 »
> 2^9 = 512 –> 0 »
> 2^8 = 256 –> 0 »
> 2^7 = 128 –> 1 (reste 1.16965)
> 2^6 = 64 –> 0 »
> 2^5 = 32 –> 0 »
> 2^4 = 16 –> 0 »
> 2^3 = 8 –> 0 »
> 2^2 = 4 –> 0 »
> 2^1 = 2 –> 0 »
> 2^0 = 1 –> 1 (reste 0.16965)
> 2^-1 = 0.5 –> 0 »
> 2^-2 = 0.25 –> 0 »
> 2^-3 = 0.125 –> 1 (reste 0.04465)
> 2^-4 = 0.0625 –> 0 »
> 2^-5 = 0.03125 –> 1 (reste 0.0134)
> 2^-5 = 0.015625 –> 0 »
> 2^-7 = 0.0078125 –> 1 (reste 0.0055875)
> 2^-8 = 0.00390625 –> 1 (reste 0.00168125)
> 2^-9 = 0.001953125 –> 0 »
> 2^-10 = 0.0009765625 –> 1 (reste 0.0007046875)
> 2^-11 = 0.00048828125 –> 1 (reste 0.00021640625)
> 2^-12 = 0.000244140625 –> 0 »
> 2^-13 = 0.0001220703125 –> 1 (reste 0.0000943359375)
> 2^-14 = 0.00006103515625 –> 1 (reste 0.00003330078125)
> 2^-15 = 0.000030517578125 –> 1 (reste 0.000002783203125)
> 2^-16 = 0.0000152587890625 –> 0 »
> 2^-17 = 0.00000762939453125 –> 0 »
En binaire : 0111 0001 0000 0010 0101 0110 1101 1100(2)
En hexa = 7 1 0 2 5 6 D C
–> -0x1.710256DCp15
Certes … mais ma calculette solaire offerte par ma banque elle fait pas l’erreur elle !