Erreur étrange avec flottants - Python - Programmation
Marsh Posté le 29-04-2006 à 16:07:12
et bien c'est juste que c'est comme ça. le résultat est tout à fait correct. surcharge __eq__ pour prendre en compte une certain approximation. 
 
http://www.wldelft.nl/soft/d3d/intro/misc/goldberg.pdf
Marsh Posté le 29-04-2006 à 16:13:57
0. Quel est l'intérêt de passer par x.__divmod__(y) quand il y a une fonction divmod(x, y) built-in? 
1. Tu n'as pas donné l'intégralité de la classe, tu n'as pas donné la méthode __str__ de Point que tu as définie, elle te permettrait pourtant de savoir où est le "problème" 
2. As tu surdéfini __eq__? 
3. affiche p.x et p.y après avoir utilisé magnetize, tu vas très vite voir où est le problème 
4. http://cch.loria.fr/documentation/ [...] ldberg.pdf 
5. help(decimal.Decimal) 
| Taz a écrit : et bien c'est juste que c'est comme ça. le résultat est tout à fait correct. surcharge __eq__ pour prendre en compte une certain approximation. | 
 
Ou bien alors il passe par le point 5 
Marsh Posté le 29-04-2006 à 16:25:56
1. Oups j'avais pas vu  
2. Non  
3. Bah non, justement on voit pas de différence (troncature auto) 
4. Merci pour la doc  
 
5. Je vais plutôt surdéfinir __eq__ 
 
Merci à tous les deux
Marsh Posté le 29-04-2006 à 16:31:28
| fafounet a écrit : 2. Non  | 
 
Dans la mesure où par défaut __eq__ teste sur l'identité, tu ne pouvais donc de toute façon pas avoir une réalisation de ton test d'égalité ![[:spamafote] [:spamafote]](https://forum-images.hardware.fr/images/perso/spamafote.gif) 
  
| fafounet a écrit : 3. Bah non, justement on voit pas de différence (troncature auto) | 
 
Ben j'aimerais bien connaître tes réglages, parce que moi je la vois la différence ![[:petrus75] [:petrus75]](https://forum-images.hardware.fr/images/perso/petrus75.gif) 
 
| Code : 
 | 
 
| fafounet a écrit : 5. Je vais plutôt surdéfinir __eq__ | 
 
Il faut le surdéfinir en testant sur un epsilon dans ce cas, donner simplement (self.x == other.x and self.y == other.y) ne passera pas si tu restes en floating point (avec Decimal ça marcherait par contre, c'est du Fixed Point)
Marsh Posté le 29-04-2006 à 16:36:33
OK c'est pasque j'utilisais print que cela ne m'affichait pas tout. 
Marsh Posté le 29-04-2006 à 15:51:28
Salut,
J'ai écrit une fonction magnetize qui doit magnetiser un point sur une grille.
Après plusieurs tests concluant en voici un dont je ne comprends pas l'orgine de l'erreur :