Résoudre les écarts de double comparaison en Java
Comparer deux valeurs doubles en Java à l'aide d'une simple vérification d'égalité peut conduire à des résultats inattendus en raison de l'inhérence limites de l'arithmétique à virgule flottante. Pour surmonter ce défi, des approches alternatives sont nécessaires.
Dans une implémentation typique, une simple comparaison de deux doubles, telle que (a - b) == 1,0, peut renvoyer faux même lorsque la différence attendue est négligeable, car les calculs en virgule flottante peuvent introduire des erreurs d'arrondi.
Une stratégie recommandée pour comparer les doubles avec plus de précision consiste à utiliser la méthode Math.abs() pour calculer la différence absolue entre les deux valeurs, puis à déterminer si cela la différence se situe dans une tolérance acceptable.
Par exemple, l'extrait de code suivant utilise cette approche pour comparer les valeurs doubles a et b :
double a = 1.000001; double b = 0.000001; double tolerance = 0.000001; boolean areEqual = (Math.abs(a - b) <= tolerance); System.out.println(areEqual); // Prints true
En définissant une valeur de tolérance appropriée, telle que 0,000001 dans cet exemple, vous pouvez déterminer si la différence entre les deux doubles est suffisamment petite pour les considérer comme égaux à des fins pratiques. Cette approche permet une comparaison plus précise et cohérente des valeurs doubles, évitant les pièges des contrôles d'égalité exacte.
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!