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
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
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!