Sobes.tech
Middle

Pourquoi la comparaison de nombres float peut-elle être incorrecte et comment y faire face?

sobes.tech IA

Réponse de l'IA

La comparaison des nombres à virgule flottante (float) peut être incorrecte en raison des caractéristiques de leur représentation en mémoire. Les nombres à virgule flottante sont stockés au format IEEE 754, qui ne peut pas toujours représenter avec précision les décimales, ce qui entraîne des erreurs d'arrondi.

Par exemple, l'expression 0.1 + 0.2 == 0.3 peut renvoyer false en raison de petites imprécisions.

Pour gérer ce problème, on compare généralement les nombres en tenant compte d'une petite delta (epsilon) :

const epsilon = 1e-9
func floatEquals(a, b float64) bool {
    return math.Abs(a - b) < epsilon
}

Ainsi, au lieu de comparer directement a == b, on vérifie que la différence entre les nombres est suffisamment petite pour les considérer comme égaux. Cela permet d'éviter les erreurs liées à la représentation imprécise des nombres et à l'accumulation d'erreurs dans les calculs.