Pourquoi l'égalité des variables Double et Float peut être trompeuse
Les types de données à virgule flottante comme float et double sont essentiels pour représenter des nombres réels dans programmation. Cependant, comprendre leurs nuances est crucial pour éviter des résultats surprenants.
Précision et arrondi : effets malicieux
Les variables flottantes et doubles ont une précision limitée, ce qui signifie qu'elles ne peuvent stocker qu'un nombre fini de chiffres sans perte d'informations. Cette limitation inhérente conduit à des erreurs d'arrondi, où la représentation interne d'un nombre est tronquée pour s'adapter à l'espace disponible.
Un exemple illustratif
Considérez les nombres 1.1 représentés comme flotteur et double. En raison d'une précision limitée, ils sont représentés en interne sous forme d'approximations :
float f = 1.1; // Internally stored as an approximation double d = 1.1; // Internally stored as an approximation
La comparaison de f et d pour l'égalité renverra false car les erreurs d'arrondi entraînent des représentations internes différentes, même si elles représentent le « même » nombre.
Éviter les ennuis
Pour éviter les comparaisons trompeuses, il est préférable d'éviter en utilisant l'opérateur d'égalité (==) pour les nombres à virgule flottante. Au lieu de cela, introduisez un seuil de tolérance (epsilon) et comparez la différence entre les nombres pour déterminer si elle se situe dans la plage acceptable :
if (abs(f - d) < epsilon) { // They are considered equal within the tolerance }
En comprenant les pièges des comparaisons flottantes et doubles, vous pouvez éviter des résultats inattendus et assurez-vous de l'exactitude de votre code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!