Maison >Java >javaDidacticiel >Comment puis-je comparer avec précision les valeurs doubles en Java pour éviter les divergences ?

Comment puis-je comparer avec précision les valeurs doubles en Java pour éviter les divergences ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-13 21:08:34328parcourir

How Can I Accurately Compare Double Values in Java to Avoid Discrepancies?

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!

Déclaration:
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