Maison > Java > javaDidacticiel > Comment comparer de manière fiable les valeurs doubles en Java et éviter les erreurs de précision ?

Comment comparer de manière fiable les valeurs doubles en Java et éviter les erreurs de précision ?

Linda Hamilton
Libérer: 2024-12-10 20:45:11
original
566 Les gens l'ont consulté

How to Reliably Compare Double Values in Java and Avoid Precision Errors?

Comparaison de valeurs doubles en Java : résoudre les erreurs de précision

Comparer des valeurs doubles en Java peut être une tâche délicate en raison d'erreurs de précision potentielles. Une comparaison simple, comme celle présentée ci-dessous, peut conduire à des résultats inattendus :

double a = 1.000001;
double b = 0.000001;

boolean result = (a - b == 1.0); // False
Copier après la connexion

Ce code s'affiche faux car l'opération de soustraction donne 0,99999999999999999, ce qui n'est pas strictement égal à 1,0. Pour surmonter ce problème, nous avons besoin d'une méthode de comparaison plus précise.

Une approche consiste à calculer la différence absolue entre les deux valeurs et à la comparer à une petite valeur de tolérance. Par exemple :

double c = Math.abs(a - b - 1.0);
boolean result = (c <= 0.000001); // True
Copier après la connexion

Ce code introduit une tolérance de 0,000001, donc tant que la différence absolue entre c et 1,0 se situe dans cette plage, la comparaison sera évaluée comme vraie. La méthode Math.abs() garantit que la valeur absolue est prise en compte, sans tenir compte de toute différence de signe.

En utilisant cette technique, nous pouvons prendre en compte les erreurs de précision potentielles et effectuer des comparaisons fiables de valeurs doubles. Cette approche est particulièrement utile lorsque vous travaillez avec des données à virgule flottante, où les comparaisons d'égalité exacte ne sont pas toujours pratiques.

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