Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.javascript > #3067
| From | Gloops <gloops@zailes.invalid.org.invalid> |
|---|---|
| Newsgroups | fr.comp.lang.javascript |
| Subject | Re: Formatage de nombre |
| Date | 2016-08-22 20:16 +0200 |
| Organization | Serveur de salon |
| Message-ID | <npffhb$dn4$1@usenet.pasdenom.info> (permalink) |
| References | <nocrhv$rgj$1@usenet.pasdenom.info> <57aa4592$0$7969$426a34cc@news.free.fr> <nodp6v$sj5$1@usenet.pasdenom.info> <npf0rb$bpf$1@cabale.usenet-fr.net> |
Le 22/08/2016 à 16:05, Olivier Miakinen a écrit : > Bonjour, > > Le 10/08/2016 01:32, Gloops a écrit : >> >> Je m'étais figuré que 0.1 + 0.2 était la blague potache des créateurs de >> Javascript, et que pour le reste ils allaient se tenir à carreau. > > Ce n'est pas une blague, c'est juste le prix à payer quand on utilise > des nombres décimaux représentés sous forme binaire (représentation > IEEE754 sur 64 bits dans le cas de JavaScript). > > 0.1 (décimal) = > 0.00011001100110011001100110011001100110011001100110011010 (ieee754) > > 3 × 0.1 (décimal) = > 0.00100110011001100110011001100110011001100110011001100111 (ieee754) > = 0.30000000000000004 (décimal) > > 0.3 (décimal) = > 0.00100110011001100110011001100110011001100110011001100110 (ieee754) > > > Mais quand on a besoin de manipuler des nombres décimaux, c'est-à-dire > où toutes les décimales à partir d'un certain rang sont nulles, la > plupart du temps cela revient à manipuler des nombres entiers, quitte > à les diviser par une puissance de 10 au moment de l'affichage. Par > exemple, au lieu de calculer des sommes en euros avec deux chiffres > après la virgule, il suffit de calculer ces mêmes sommes en centimes > d'euros, sans virgule : 3,50 € = 350 centimes. > > En effet, il faut savoir que *tous* les nombres entiers compris entre > -9007199254740992 et +9007199254740992 sont représentables dans IEEE754 > 64 bits (et donc dans JavaScript) sans aucune erreur d'arrondi. Cela > devrait suffire pour la plupart des besoins... > Donc, on commet une erreur d'arrondi à la fin parce que la représentation n'en a pas :) Il n'y a que Javascript à faire le gag, ou je me trompe ? Je m'étais dit que j'allais consacrer une demi-journée à comprendre comment se bidouille cette affaire, mais ... il faut une demi-journée disponible :)
Back to fr.comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar
Formatage de nombre Gloops <gloops@zailes.invalid.org.invalid> - 2016-08-09 17:06 +0200
Re: Formatage de nombre SAM <stephanemoriaux.NoAdmin@wanadoo.fr.invalid> - 2016-08-09 23:05 +0200
Re: Formatage de nombre Gloops <gloops@zailes.invalid.org.invalid> - 2016-08-10 01:21 +0200
Re: Formatage de nombre Gloops <gloops@zailes.invalid.org.invalid> - 2016-08-10 01:32 +0200
Re: Formatage de nombre Olivier Miakinen <om+news@miakinen.net> - 2016-08-22 16:05 +0200
Re: Formatage de nombre Gloops <gloops@zailes.invalid.org.invalid> - 2016-08-22 20:16 +0200
Re: Formatage de nombre Olivier Miakinen <om+news@miakinen.net> - 2016-08-22 22:58 +0200
Re: Formatage de nombre Gloops <gloops@zailes.invalid.org.invalid> - 2016-08-23 14:50 +0200
csiph-web