Hello,
Les égalités entres flottants, ça toujours été un sujet délicat.

Envoyé par
damiengif
Or, d'après moi, des que x devient un peu grand, le flottant x-FLT_EPSILON (resp x+FLT_EPSILON) est égal à x. Dans le code suivant, a==x
C'est "normal", plus le nombre est grand plus la précision diminue, pour tout nombre >= 2, x + FLT_EPSILON == x et x == x - FLT_EPSILON.
Il n'y à pas de solutions miracle, soit le comportement te convient, soit tu aggrandi epsilon (mais dans ce cas de petits nombres pourront être considérés comme égaux alors qu'ils ne le sont pas).
Note que la STL propose cet epsilon, pas besoin de le redéfinir.
std::numeric_limits<float>::epsilon();
Partager