OVH Cloud OVH Cloud

IEEE754 bis

4 réponses
Avatar
Olivier Miakinen
[ publication croisée, suivi dans fr.comp.lang.javascript ]

Quelques variations sur le format des nombres en virgule flottante,
plus précisément le format IEEE-754 double précision utilisé en
JavaScript : <http://www.miakinen.net/vrac/ieee754/>

Je n'ai pas encore rédigé de doc sur cette page, mais en gros on
peut jouer avec un entier (nommé n) et un nombre en virgule flottante
(nommé x) qui est aussi représenté selon trois entiers (signe, exposant,
fraction) selon la norme IEEE-754. Les boutons permettent de faire
diverses opérations sur les nombres, la plus intéressante étant celle
qui donne les nombres flottants les plus proches d'un nombre flottant
donné : voir les boutons « -> n » et « <- n » avec n = 1 ou -1.

Toutes les conversions utilisent une classe IEEE754 qui est entièrement
définie ici : <http://www.miakinen.net/vrac/ieee754/ieee754.js>.


Amusez-vous bien ! (je m'adresse à ceux qui n'attrapperont pas la
migraine en y allant...)

--
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/article_petition.php3?id_article=9>

4 réponses

Avatar
Stéphane Santon
Bonjour,

Je serais curieux d'essayer le comportement de la fonction Round (si
elle existe) en JavaScript, selon la plateforme.

Voir si l'arrondi de n.5 est à l'entier pair le plus proche :

Round( 1.5) -> 2
Round( 2.5) -> 2
Round( 3.5) -> 4
Round( 4.5) -> 4
Round( 5.5) -> 6
Round( 6.5) -> 6

Olivier Miakinen a utilisé son clavier pour écrire :
Quelques variations sur le format des nombres en virgule flottante,
plus précisément le format IEEE-754 double précision utilisé en
JavaScript : <http://www.miakinen.net/vrac/ieee754/>


--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.
--
Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime

BTS Electrotechnique *** http://enselec.team-santonum.com

Avatar
Olivier Miakinen

Je serais curieux d'essayer le comportement de la fonction Round (si
elle existe) en JavaScript, selon la plateforme.


Le comportement est normalisé, donc ça ne devrait pas varier d'une
plateforme à l'autre.

Voir si l'arrondi de n.5 est à l'entier pair le plus proche :

Round( 1.5) -> 2
Round( 2.5) -> 2
Round( 3.5) -> 4
Round( 4.5) -> 4
Round( 5.5) -> 6
Round( 6.5) -> 6


Ça ne devrait pas être le cas. En principe :

Math.round(-6.5) -> -6
Math.round(-5.5) -> -5
Math.round(-4.5) -> -4
Math.round(-3.5) -> -3
Math.round(-2.5) -> -2
Math.round(-1.5) -> -1
Math.round(-0.5000000001) -> -1
Math.round(-0.5) -> -0
Math.round(-0) -> -0
Math.round(+0) -> +0
Math.round( 0.4999999999) -> +0
Math.round( 0.5) -> 1
Math.round( 1.5) -> 2
Math.round( 2.5) -> 3
Math.round( 3.5) -> 4
Math.round( 4.5) -> 5
Math.round( 5.5) -> 6
Math.round( 6.5) -> 7

Mais pour s'en assurer, à l'occasion je rajouterai quelques boutons pour
tester des fonctions usuelles.

--
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/article_petition.php3?id_article=9>

Avatar
Dr John Stockton
JRS: In article , dated
Mon, 24 Oct 2005 00:26:56, seen in news:fr.comp.lang.javascript,
Stéphane Santon posted :

Je serais curieux d'essayer le comportement de la fonction Round (si
elle existe) en JavaScript, selon la plateforme.

Voir si l'arrondi de n.5 est à l'entier pair le plus proche :

Round( 1.5) -> 2
Round( 2.5) -> 2
Round( 3.5) -> 4
Round( 4.5) -> 4
Round( 5.5) -> 6
Round( 6.5) -> 6


C'est "Bankers' Rounding". Pscha!

ECMA-262 Edn 3 15.8.2.15 : round(x) returns the number value that is
closest to x and is equal to a mathematical integer. If two integer
number values are equally close to x, then the result is the number
value that is closer to PLUS INFINITY.

MSIE4 est compliant.

--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
<URL:http://www.jibbering.com/faq/> JL/RC: FAQ of news:comp.lang.javascript
<URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.

Avatar
Olivier Miakinen

Voir si l'arrondi de n.5 est à l'entier pair le plus proche :

Round( 1.5) -> 2
Round( 2.5) -> 2
Round( 3.5) -> 4
Round( 4.5) -> 4
Round( 5.5) -> 6
Round( 6.5) -> 6


C'est "Bankers' Rounding". Pscha!


Sauf que cet « arrondi du banquier » ne s'applique pas aux nombres
entiers (les euros par exemple) mais aux plus petits nombres
représentables (les centimes). D'ailleurs on retrouve exactement
le même arrondi dans IEEE-754 quand il s'agit du dernier chiffre
binaire de la mantisse d'un flottant, et non par Math.round().

--
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/article_petition.php3?id_article=9>