GNT sans publicité, site mobile, fonctionnalitées exclusives...

IEEE 754

Le
Olivier Miakinen
Bonjour,

M'étant intéressé au format des nombres flottants pour écrire ma
fonction de conversion en Hexadécimal, je me suis amusé à décortiquer
le format IEEE 754 doublé précision.

Le résultat (temporaire) se trouve ici :
<http://www.miakinen.net/tmp/number.js>
<http://www.miakinen.net/tmp/toHexa>

Mes tests semblent montrer que cela fonctionne bien, malgré une
bidouille que j'ai dû faire à cause des erreurs d'arrondi dans le
calcul des log.

Attention cependant : je ne peux pas distinguer les deux zéros (+0 et
-0) ni les (2^53 - 2) valeurs différentes de NaN (Not a Number), j'ai
donc dû choisir. Pour 0 j'affiche l'encodage IEEE de +0, quand à NaN
j'affiche celui qui est juste à côté de +infini.

Il est amusant de noter que dans l'immense majorité des cas, lorsque le
premier chiffre non nul de la représentation hexa est un 1, alors tous
les chiffres suivants se retrouvent tels quels dans la représentation
IEEE 754 -- et réciproquement. Voir en particulier les multiples de 1/3
et 1/7, et les multiples de PI.

Cordialement,
--
Olivier Miakinen
Aidez Saburi à rester près de sa famille et poursuivre ses études
en France, signez la pétition :
http://www.fcpe94.ouvaton.org/artic..._article=9
Lire les 9 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #539288

Attention cependant : je ne peux pas distinguer les deux zéros (+0 et
-0)


Et pourtant si : je viens de trouver un moyen de les distinguer.
Qui d'autre saura le faire ? YD peut-être ? Ou bien ASM ? À moins
que ce ne soit Francis ? Les paris sont ouverts !


--
Olivier Miakinen
Aidez Saburi à rester près de sa famille et poursuivre ses études
en France, signez la pétition :
http://www.fcpe94.ouvaton.org/artic..._article=9

ASM
Le #539286

Attention cependant : je ne peux pas distinguer les deux zéros (+0 et
-0)



Et pourtant si : je viens de trouver un moyen de les distinguer.
Qui d'autre saura le faire ? YD peut-être ? Ou bien ASM ? À moins
que ce ne soit Francis ? Les paris sont ouverts !


Houlà là !
je n'ai jamais réussi à équilibrer une compta
ce n'est pas pour aller me casser la tête
avec des plus de moins que rien !

--
Stephane Moriaux et son [moins] vieux Mac


Dr John Stockton
Le #539030
JRS: In article 2005 21:38:59, seen in news:fr.comp.lang.javascript, Olivier Miakinen

Attention cependant : je ne peux pas distinguer les deux zéros (+0 et
-0)


Et pourtant si : je viens de trouver un moyen de les distinguer.
Qui d'autre saura le faire ? YD peut-être ? Ou bien ASM ? À moins
que ce ne soit Francis ? Les paris sont ouverts !



Lisez s.v.p. mon et puis mon http://www.merlyn.demon.co.uk/js-*.htm !

<QUOTE>
There are special values :-
The value NaN - Not-A-Number - is unequal to everything,
including itself; there is a function isNaN.
There are two non-finite numbers - plus and minus
Infinity; there is a function isFinite.
Plus and minus zero are representable and equal, but are
distinguishable by comparing reciprocals.
Denormals, where the exponent is lowest and the mantissa starts
with 0, have lessened proportional resolution; the lowest is about
4.94e-324.
</QUOTE>

X = +1/Infinity
Y = -1/Infinity
X == Y // true
1/X == 1/Y // false
1/X // Infinity
1/Y // -Infinity
1/(X*Y) // -Infinity

--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©


Dr John Stockton
Le #539029
JRS: In article 2005 20:49:16, seen in news:fr.comp.lang.javascript, Olivier Miakinen

M'étant intéressé au format des nombres flottants pour écrire ma
fonction de conversion en Hexadécimal, je me suis amusé à décortiquer
le format IEEE 754 doublé précision.


Lisez svp mon

Pour calculer le jour de Paques, AFAIK les methodes de Zeller sont les
plis vites :
--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©

Olivier Miakinen
Le #538770

Attention cependant : je ne peux pas distinguer les deux zéros (+0 et
-0)


Et pourtant si : je viens de trouver un moyen de les distinguer.
Qui d'autre saura le faire ? YD peut-être ? Ou bien ASM ? À moins
que ce ne soit Francis ? Les paris sont ouverts !


Lisez s.v.p. mon
X = +1/Infinity
Y = -1/Infinity
X == Y // true
1/X == 1/Y // false
1/X // Infinity
1/Y // -Infinity
1/(X*Y) // -Infinity


Bravo ! 1/+0 = +Infinity et 1/-0 = -Infinity.
Il y a d'autres moyens plus compliqués, par exemple
Math.pow(+0,-1) = +Infinity et Math.pow(-0,-1) = -Infinity.

En revanche, il n'existe aucun moyen de distinguer les
9 007 199 254 740 990 variantes possibles de NaN.



Publicité
Suivre les réponses
Poster une réponse
Anonyme