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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-12-27 18:57:21601parcourir

How Can I Accurately Compare Double Values in Java?

Comparer efficacement des valeurs doubles en Java

En Java, comparer deux valeurs doubles à l'aide de l'opérateur d'égalité (==) peut conduire à des résultats inattendus en raison des limites de précision inhérentes à l'arithmétique à virgule flottante. Pour surmonter ce problème, il est crucial d'adopter des approches alternatives pour comparer efficacement les valeurs doubles.

Considérons l'exemple suivant :

double a = 1.000001;
double b = 0.000001;

boolean result = (a - b) == 1.0;

Étonnamment, cette comparaison est évaluée comme fausse, même si intuitivement elle devrait l'être vrai. En effet, l'opération de soustraction (a - b) donne 0,99999999999999999, ce qui est légèrement inférieur à 1,0.

Pour résoudre ce problème, une approche plus robuste consiste à utiliser une marge d'erreur, ou delta, à l'intérieur de laquelle les valeurs peuvent être considérées comme égales. Une façon d'implémenter cela consiste à utiliser Math.abs() :

double a = 1.000001;
double b = 0.000001;
double delta = 0.000001;

boolean result = Math.abs(a - b - 1.0) <= delta;

Dans ce cas, si la différence absolue entre (a - b) et 1,0 est inférieure ou égale au delta prédéfini de 0,000001, la comparaison sera évaluée comme vraie. Cette approche permet des comparaisons plus précises tout en tenant compte des erreurs de précision potentielles.

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