Comparaison des valeurs de point flottante avec la conservation de précision
La comparaison du point flottant pose un défi dû à la perte de précision. Comparaison simplement des doubles ou des flotteurs à l'aide de == n'est pas fiable.
Comparaison basée sur Epsilon
Une approche implique l'utilisation d'un seuil d'Epsilon (ε) pour compter pour la perte de précision:
bool CompareDoubles2(double A, double B) { double diff = A - B; return (diffCependant, cette approche peut être inefficace.
Considérations dépendantes du contexte
Le choix de la méthode de comparaison dépend du contexte et des valeurs attendues. Considérez les pièges potentiels suivants:
std :: Numeric_limits
Les conséquences de l'arithmétique entier
en utilisant des doubles pour maintenir les valeurs entières peuvent conduire à une arithmétique correcte, tant que les fractions ou les valeurs en dehors de la plage d'un entier sont étendues. Par exemple, 4.0 / 2.0 sera égal à 1,0 1.0.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3