Liste des Groupes | Revenir à fcl python |
>(Ça ne concerne pas Python, mais c'est la même idée qu'un bug qui a été>
célèbre en Java, dont la correction a consisté à remplacer (a+b)/2 par
a + (b-a)/2.)
Il y a intérêt a avoir un beau commentaire juste à côté car il y a fort
à parier que quelqu'un qui passe sur le code sans être courant risque de
simplifier (et c'est logique).
>
Question bête : si c'est (a+b) qui provoque le dépassement, pourquoi pas
« a/2 + b/2 » ? Perte de précision ?
Oui, parce que dans ce cas le milieu de 3 et 5 est 3 (3//2 == 1 et 5//2
= 2), ce qui n'est pas utile dans les algos dichotomiques.
>
(Si tu penses à la division flottante, alors tu as un problème encore
plus grave, puisqu'on a alors en général seulement 53 bits de précision
-- pour les double IEEE 754. Sans compter les blagues du genre
0.1+0.1+0.1 != 0.3)
Et pour ma culture, il vient d'où ce bug ?>
Voici ce que j'ai trouvé de plus ancien sur le bug dans la bibliothèque
standard de Java :
>
https://ai.googleblog.com/2006/06/extra-extra-read-all-about-it-nearly.html
Les messages affichés proviennent d'usenet.