1. Comparer deux flottants avec un double égal
2 points, et un programme qui ne s'arrête jamais si le test pilote une boucleCe qu'il ne faut pas écrire
« if 0.1 + 0.2 == 0.3: ... et le test passe, puisque c'est vrai en mathématiques. »
Ce qu'il faut écrire
« Les flottants sont des approximations binaires : 0.1 + 0.2 vaut 0.30000000000000004, donc le test est FAUX. On écrit if abs(0.1 + 0.2 - 0.3) < 1e-9. »
Pourquoi : Un dixième n'a pas d'écriture binaire finie, exactement comme un tiers n'a pas d'écriture décimale finie. L'erreur est minuscule mais l'égalité, elle, est binaire.