Maison >développement back-end >C++ >Quand l'égalité en virgule flottante est-elle acceptable ?

Quand l'égalité en virgule flottante est-elle acceptable ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-16 13:13:03254parcourir

When Is Floating-Point Equality Acceptable?

Égalité à virgule flottante : quand et pourquoi

Bien que cela soit généralement mal vu, il existe des cas où les comparaisons à virgule flottante peuvent être jugées acceptables .

Représentation exacte des nombres entiers

IEEE 754, la norme pour l'arithmétique à virgule flottante, garantit que les entiers (nombres entiers) dans une certaine plage sont représentés exactement dans format à virgule flottante. Cela signifie que des comparaisons impliquant des nombres entiers, y compris 0,0, peuvent être effectuées à l'aide de l'opérateur d'égalité (==).

Précautions concernant les valeurs calculées

Cependant, la prudence est de mise. lorsque vous travaillez avec des valeurs à virgule flottante dérivées de calculs. L'attribution d'un nombre entier à une variable à virgule flottante est sûre, mais l'exécution d'opérations arithmétiques sur des nombres à virgule flottante peut introduire des erreurs d'arrondi. Par conséquent, les comparaisons d'égalité entre les valeurs calculées doivent être évitées.

Litéraux constants

Lors de la comparaison d'une variable avec un littéral constant, il est crucial de s'assurer que le littéral est défini comme une double constante (par exemple, 3,14 L) pour maintenir une précision de double précision.

Exemple

Dans l'extrait de code fourni, la const statique BAR est définie comme une double . Si d est également un double, alors la comparaison d == BAR retournera toujours vrai en supposant que d et BAR représentent des nombres entiers dans la plage valide pour la représentation à virgule flottante.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn