suizokukan a écrit :
Diable, Masklinn, je ne pensais pas que la comparaison directe de deux types float posait problème.
|
Code :
>>> (0.2 - 0.1) == (0.3 - 0.2) False
|
Vas lire le goldberg immédiatement, chenapan
Il faut utiliser un epsilon (en gros tu détermines une marge d'erreur, tu soustraits les deux nombres à comparer et si le résultat est inférieur à ta marge d'erreur tu considères qu'ils sont égaux).
Il y a d'autres stratégies, mais elles imposent des limitations (et potentiellement un impact au niveau des perfs) et ne sont pas nécessairement utilisables selon les cas: faire ses calculs avec des entiers (en ajoutant des puissances de 10 aux valeurs initiales, c'est comme ça que sont faits les calculs monétaires) ou en faisant du fixed-point arithmetics ou du decimal. En python, c'est le rôle du module decimal justement.
Message édité par masklinn le 13-10-2009 à 16:10:07
---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody