Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Le 29/09/2007 15:02, Steph a écrit :
Combien fait: 5,2 - 0,1 = ? Niveau scolaire: CM1 non ?
Tapez: javascript:5.2-0.1 dans la barre URL de FF
Mais que fait l'Éducation Nationale :) ?
Eh bien c'est normal. Il se trouve juste qu'I.E. affiche deux chiffres significatifs de moins que Firefox, mais le résultat est faux chez l'un comme chez l'autre.
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754. Et le « coupable » est le programmeur s'il a besoin de faire des calculs sur des nombres décimaux à n chiffres après la virgule et qu'il ne les transforme pas en entiers avant (en les multipliant par 10^n).
Le 29/09/2007 15:02, Steph a écrit :
Combien fait: 5,2 - 0,1 = ?
Niveau scolaire: CM1 non ?
Tapez:
javascript:5.2-0.1
dans la barre URL de FF
Mais que fait l'Éducation Nationale :) ?
Eh bien c'est normal. Il se trouve juste qu'I.E. affiche deux chiffres
significatifs de moins que Firefox, mais le résultat est faux chez l'un
comme chez l'autre.
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754. Et
le « coupable » est le programmeur s'il a besoin de faire des calculs
sur des nombres décimaux à n chiffres après la virgule et qu'il ne les
transforme pas en entiers avant (en les multipliant par 10^n).
Combien fait: 5,2 - 0,1 = ? Niveau scolaire: CM1 non ?
Tapez: javascript:5.2-0.1 dans la barre URL de FF
Mais que fait l'Éducation Nationale :) ?
Eh bien c'est normal. Il se trouve juste qu'I.E. affiche deux chiffres significatifs de moins que Firefox, mais le résultat est faux chez l'un comme chez l'autre.
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754. Et le « coupable » est le programmeur s'il a besoin de faire des calculs sur des nombres décimaux à n chiffres après la virgule et qu'il ne les transforme pas en entiers avant (en les multipliant par 10^n).
Steph
Le 29/09/2007 15:19, Olivier Miakinen disait:
Eh bien c'est normal. Il se trouve juste qu'I.E. affiche deux chiffres significatifs de moins que Firefox, mais le résultat est faux chez l'un comme chez l'autre.
Bonjour Olivier, toujours fidèle au poste :) Tu aurais pu mettre normal entre guillemets...
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754. Et le « coupable » est le programmeur s'il a besoin de faire des calculs sur des nombres décimaux à n chiffres après la virgule et qu'il ne les transforme pas en entiers avant (en les multipliant par 10^n).
Voilà. C'est la seule solution. J'étais tombé sur ces "bugs" il y a quelques années (tain, déjà 8 ans :( ) lorsque, pour le fun, j'avais tâté les fcts Math de JS.
Si ça peut aider des collégiens... f(x)=ax²+bx+c http://www.lavillerose.com/calcul/index.htm (j'étudiais ça en Seconde S, et maintenant ?) Fraction: http://www.lavillerose.com/calcul/fraction.php3 Nbs 1er: http://www.lavillerose.com/calcul/premier.php3 (tiens je croyais que le .php3 avait été abandonné chez Online ???)
Bon WE à tous, avec grand soleil bleu, profitez ! :)
-- Steph Enlever l'.adressebidon.invalid pour m'écrire en privé
Le 29/09/2007 15:19, Olivier Miakinen disait:
Eh bien c'est normal. Il se trouve juste qu'I.E. affiche deux chiffres
significatifs de moins que Firefox, mais le résultat est faux chez l'un
comme chez l'autre.
Bonjour Olivier, toujours fidèle au poste :)
Tu aurais pu mettre normal entre guillemets...
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754. Et
le « coupable » est le programmeur s'il a besoin de faire des calculs
sur des nombres décimaux à n chiffres après la virgule et qu'il ne les
transforme pas en entiers avant (en les multipliant par 10^n).
Voilà. C'est la seule solution. J'étais tombé sur ces "bugs" il y a
quelques années (tain, déjà 8 ans :( ) lorsque, pour le fun, j'avais
tâté les fcts Math de JS.
Si ça peut aider des collégiens...
f(x)=ax²+bx+c http://www.lavillerose.com/calcul/index.htm (j'étudiais ça
en Seconde S, et maintenant ?)
Fraction: http://www.lavillerose.com/calcul/fraction.php3
Nbs 1er: http://www.lavillerose.com/calcul/premier.php3
(tiens je croyais que le .php3 avait été abandonné chez Online ???)
Bon WE à tous, avec grand soleil bleu, profitez ! :)
--
Steph
Enlever l'.adressebidon.invalid pour m'écrire en privé
Eh bien c'est normal. Il se trouve juste qu'I.E. affiche deux chiffres significatifs de moins que Firefox, mais le résultat est faux chez l'un comme chez l'autre.
Bonjour Olivier, toujours fidèle au poste :) Tu aurais pu mettre normal entre guillemets...
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754. Et le « coupable » est le programmeur s'il a besoin de faire des calculs sur des nombres décimaux à n chiffres après la virgule et qu'il ne les transforme pas en entiers avant (en les multipliant par 10^n).
Voilà. C'est la seule solution. J'étais tombé sur ces "bugs" il y a quelques années (tain, déjà 8 ans :( ) lorsque, pour le fun, j'avais tâté les fcts Math de JS.
Si ça peut aider des collégiens... f(x)=ax²+bx+c http://www.lavillerose.com/calcul/index.htm (j'étudiais ça en Seconde S, et maintenant ?) Fraction: http://www.lavillerose.com/calcul/fraction.php3 Nbs 1er: http://www.lavillerose.com/calcul/premier.php3 (tiens je croyais que le .php3 avait été abandonné chez Online ???)
Bon WE à tous, avec grand soleil bleu, profitez ! :)
-- Steph Enlever l'.adressebidon.invalid pour m'écrire en privé
Olivier Miakinen
Le 30/09/2007 13:35, Steph me répondait :
Eh bien c'est normal. Il se trouve juste qu'I.E. affiche deux chiffres significatifs de moins que Firefox, mais le résultat est faux chez l'un comme chez l'autre.
Bonjour Olivier, toujours fidèle au poste :)
:-D
Tu aurais pu mettre normal entre guillemets...
Je ne vois pas pourquoi. Quel que soit le format choisi pour représenter les nombres (format à nombre fini de bits fixé à l'avance), il est tout à fait normal que seul un nombre fini de réels soient représentables, or 0,1 et 5,2 n'en font pas partie dans le cas de IEEE 754 64 bits.
En revanche, les nombres 1 et 52 en font partie, de même que tous les entiers compris entre -9007199254740992 et +9007199254740992. Ça fait quand même pas mal de possibilités pour les calculs courants.
Cela, tous les programmeurs doivent en être conscients, et s'ils ont besoin de faire des additions et soustractions qui tombent juste avec des nombres décimaux à n chiffres après la virgule ils doivent savoir qu'il faut qu'ils travaillent avec des nombres 10^n fois plus grands (la virgule ne se rajoutant qu'au moment de l'affichage).
[...] J'étais tombé sur ces "bugs" il y a quelques années (tain, déjà 8 ans :( ) lorsque, pour le fun, j'avais tâté les fcts Math de JS.
Encore une fois, guillemets ou pas, gants de toilette ou pas, ce ne sont pas des bugs : c'est juste une conséquence normale du fait mathématique qu'un ensemble infini est plus grand qu'un ensemble fini. Il n'y a bug que lorsqu'un programmeur oublie qu'il doit prendre ses précautions avant de faire des calculs en nombres flottants.
Bon WE à tous, avec grand soleil bleu, profitez ! :)
Idem !
Le 30/09/2007 13:35, Steph me répondait :
Eh bien c'est normal. Il se trouve juste qu'I.E. affiche deux chiffres
significatifs de moins que Firefox, mais le résultat est faux chez l'un
comme chez l'autre.
Bonjour Olivier, toujours fidèle au poste :)
:-D
Tu aurais pu mettre normal entre guillemets...
Je ne vois pas pourquoi. Quel que soit le format choisi pour représenter
les nombres (format à nombre fini de bits fixé à l'avance), il est tout
à fait normal que seul un nombre fini de réels soient représentables,
or 0,1 et 5,2 n'en font pas partie dans le cas de IEEE 754 64 bits.
En revanche, les nombres 1 et 52 en font partie, de même que tous les
entiers compris entre -9007199254740992 et +9007199254740992. Ça fait
quand même pas mal de possibilités pour les calculs courants.
Cela, tous les programmeurs doivent en être conscients, et s'ils ont
besoin de faire des additions et soustractions qui tombent juste avec
des nombres décimaux à n chiffres après la virgule ils doivent savoir
qu'il faut qu'ils travaillent avec des nombres 10^n fois plus grands
(la virgule ne se rajoutant qu'au moment de l'affichage).
[...] J'étais tombé sur ces "bugs" il y a
quelques années (tain, déjà 8 ans :( ) lorsque, pour le fun, j'avais
tâté les fcts Math de JS.
Encore une fois, guillemets ou pas, gants de toilette ou pas, ce ne sont
pas des bugs : c'est juste une conséquence normale du fait mathématique
qu'un ensemble infini est plus grand qu'un ensemble fini. Il n'y a bug
que lorsqu'un programmeur oublie qu'il doit prendre ses précautions
avant de faire des calculs en nombres flottants.
Bon WE à tous, avec grand soleil bleu, profitez ! :)
Eh bien c'est normal. Il se trouve juste qu'I.E. affiche deux chiffres significatifs de moins que Firefox, mais le résultat est faux chez l'un comme chez l'autre.
Bonjour Olivier, toujours fidèle au poste :)
:-D
Tu aurais pu mettre normal entre guillemets...
Je ne vois pas pourquoi. Quel que soit le format choisi pour représenter les nombres (format à nombre fini de bits fixé à l'avance), il est tout à fait normal que seul un nombre fini de réels soient représentables, or 0,1 et 5,2 n'en font pas partie dans le cas de IEEE 754 64 bits.
En revanche, les nombres 1 et 52 en font partie, de même que tous les entiers compris entre -9007199254740992 et +9007199254740992. Ça fait quand même pas mal de possibilités pour les calculs courants.
Cela, tous les programmeurs doivent en être conscients, et s'ils ont besoin de faire des additions et soustractions qui tombent juste avec des nombres décimaux à n chiffres après la virgule ils doivent savoir qu'il faut qu'ils travaillent avec des nombres 10^n fois plus grands (la virgule ne se rajoutant qu'au moment de l'affichage).
[...] J'étais tombé sur ces "bugs" il y a quelques années (tain, déjà 8 ans :( ) lorsque, pour le fun, j'avais tâté les fcts Math de JS.
Encore une fois, guillemets ou pas, gants de toilette ou pas, ce ne sont pas des bugs : c'est juste une conséquence normale du fait mathématique qu'un ensemble infini est plus grand qu'un ensemble fini. Il n'y a bug que lorsqu'un programmeur oublie qu'il doit prendre ses précautions avant de faire des calculs en nombres flottants.
Bon WE à tous, avec grand soleil bleu, profitez ! :)
Idem !
Vincent Lefevre
Dans l'article , Olivier Miakinen <om+ écrit:
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754.
Enfin le Javascript y est aussi pour quelque chose. Le langage aurait pu *aussi* proposer une arithmétique décimale (cf IEEE 854 et la révision de la norme IEEE 754, a.k.a. IEEE754R). Java le fait d'ailleurs, sauf que c'est en précision arbitraire (mais c'est mieux).
Dans l'article <46fe50c6@neottia.net>,
Olivier Miakinen <om+news@miakinen.net> écrit:
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754.
Enfin le Javascript y est aussi pour quelque chose. Le langage aurait
pu *aussi* proposer une arithmétique décimale (cf IEEE 854 et la
révision de la norme IEEE 754, a.k.a. IEEE754R). Java le fait
d'ailleurs, sauf que c'est en précision arbitraire (mais c'est
mieux).
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754.
Enfin le Javascript y est aussi pour quelque chose. Le langage aurait pu *aussi* proposer une arithmétique décimale (cf IEEE 854 et la révision de la norme IEEE 754, a.k.a. IEEE754R). Java le fait d'ailleurs, sauf que c'est en précision arbitraire (mais c'est mieux).
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754.
Enfin le Javascript y est aussi pour quelque chose. Le langage aurait pu *aussi* proposer une arithmétique décimale
Oui, c'est vrai. Mais c'est plus facile à faire dans un langage fortement typé que dans un langage tel que JavaScript où les conversions sont automatiques d'un type à un autre, selon les besoins. Par exemple il n'existe pas non plus un type entier distinct du type flottant.
(cf IEEE 854 et la révision de la norme IEEE 754, a.k.a. IEEE754R).
Merci pour les références, je chercherai pour ma culture personnelle.
Java le fait d'ailleurs, sauf que c'est en précision arbitraire (mais c'est mieux).
Java est un langage fortement typé, aussi il est bien heureux qu'il le fasse.
Le 01/10/2007 03:06, Vincent Lefevre a écrit :
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754.
Enfin le Javascript y est aussi pour quelque chose. Le langage aurait
pu *aussi* proposer une arithmétique décimale
Oui, c'est vrai. Mais c'est plus facile à faire dans un langage
fortement typé que dans un langage tel que JavaScript où les
conversions sont automatiques d'un type à un autre, selon les
besoins. Par exemple il n'existe pas non plus un type entier
distinct du type flottant.
(cf IEEE 854 et la révision de la norme IEEE 754, a.k.a. IEEE754R).
Merci pour les références, je chercherai pour ma culture personnelle.
Java le fait d'ailleurs, sauf que c'est en précision arbitraire (mais
c'est mieux).
Java est un langage fortement typé, aussi il est bien heureux qu'il
le fasse.
Le « responsable » n'est pas le navigateur, mais la norme IEEE-754.
Enfin le Javascript y est aussi pour quelque chose. Le langage aurait pu *aussi* proposer une arithmétique décimale
Oui, c'est vrai. Mais c'est plus facile à faire dans un langage fortement typé que dans un langage tel que JavaScript où les conversions sont automatiques d'un type à un autre, selon les besoins. Par exemple il n'existe pas non plus un type entier distinct du type flottant.
(cf IEEE 854 et la révision de la norme IEEE 754, a.k.a. IEEE754R).
Merci pour les références, je chercherai pour ma culture personnelle.
Java le fait d'ailleurs, sauf que c'est en précision arbitraire (mais c'est mieux).
Java est un langage fortement typé, aussi il est bien heureux qu'il le fasse.