Maison > développement back-end > C++ > Pourquoi la comparaison de valeurs doubles en C# renvoie-t-elle parfois la valeur False ?

Pourquoi la comparaison de valeurs doubles en C# renvoie-t-elle parfois la valeur False ?

Susan Sarandon
Libérer: 2025-01-22 20:50:12
original
852 Les gens l'ont consulté

Why Does Comparing Double Values in C# Sometimes Return False?

Comprendre les comparaisons à double précision en C#

Problème :

La comparaison directe de double variables en C# peut donner des résultats inattendus. Par exemple, if (x == 0.1) peut être évalué à false même lorsque x se voit attribuer la valeur 0.1.

Cause fondamentale :

Le problème vient de la façon dont les nombres à virgule flottante (comme float et double) sont représentés dans la mémoire de l'ordinateur. Ils utilisent une représentation fractionnaire binaire, contrairement à la représentation fractionnaire décimale à laquelle nous sommes habitués. Cela signifie que de nombreuses valeurs décimales, telles que 0,1, ne peuvent pas être représentées avec précision en binaire. L'approximation résultante introduit de subtiles erreurs d'arrondi.

Résolution :

La solution la plus efficace consiste à utiliser le type de données decimal lorsque la précision est primordiale. decimal utilise une représentation fractionnaire décimale, capable de stocker avec précision des valeurs telles que 0,1.

Plus de détails :

Les fractions binaires, similaires aux fractions décimales, utilisent des puissances de 2 au lieu de puissances de 10. Tout comme 1/3 (0,3333...) ne peut pas être représenté exactement en décimal, 1/10 (0,1) n'a pas de représentation binaire exacte . Cette limitation inhérente conduit à des erreurs d’arrondi qui entraînent des écarts de comparaison. L'ordinateur stocke une approximation proche de 0,1, mais cette approximation n'est pas exactement égale au 0,1 littéral utilisé dans la comparaison.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal