Quand la comparaison à virgule flottante est-elle acceptable ?
En programmation, comparer des nombres à virgule flottante avec l'opérateur d'égalité (= =) est généralement découragés en raison des inexactitudes inhérentes à leur représentation. Cependant, il existe des scénarios limités dans lesquels de telles comparaisons peuvent être considérées comme fiables.
Représentations exactes d'entiers
IEEE 754, la norme largement adoptée pour l'arithmétique à virgule flottante, garantit que les représentations flottantes d'entiers dans une plage spécifique sont exactes. Par conséquent, les nombres entiers, y compris zéro, peuvent être comparés à l'aide de l'opérateur d'égalité.
Exemple :
float a = 1.0; float b = 1.0; a == b; // True
Constantes intégrales
L'utilisation de constantes définies comme const double statique, comme la constante BAR dans l'exemple de code, garantit que la valeur est représentée comme une virgule flottante exacte nombre. Ainsi, comparer une variable avec une telle constante à l'aide de l'opérateur d'égalité produira toujours le résultat correct.
Exemple :
static const double BAR = 3.14; void foo(double d) { if (d == BAR) ... }
Dans ce cas, foo(BAR ) sera toujours évalué à vrai, en supposant qu'aucun autre calcul ou opération ne modifie la variable d.
Attention Notes
Bien que les comparaisons d'entiers à virgule flottante soient généralement fiables, la prudence est toujours de mise.
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!