Heim >Java >javaLernprogramm >Wie kann ich doppelte Werte in Java genau vergleichen, um Diskrepanzen zu vermeiden?

Wie kann ich doppelte Werte in Java genau vergleichen, um Diskrepanzen zu vermeiden?

Barbara Streisand
Barbara StreisandOriginal
2024-12-13 21:08:34325Durchsuche

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

Behebung von Doppelvergleichsdiskrepanzen in Java

Der Vergleich zweier Doppelwerte in Java mithilfe einer einfachen Gleichheitsprüfung kann aufgrund der inhärenten Eigenschaften zu unerwarteten Ergebnissen führen Einschränkungen der Gleitkomma-Arithmetik. Um diese Herausforderung zu meistern, sind alternative Ansätze erforderlich.

In einer typischen Implementierung kann ein einfacher Vergleich zweier Doubles, wie zum Beispiel (a – b) == 1,0, „false“ zurückgeben, selbst wenn der erwartete Unterschied vernachlässigbar ist. da Gleitkommaberechnungen zu Rundungsfehlern führen können.

Eine empfohlene Strategie zum genaueren Vergleichen von Doppelwerten besteht darin, die Methode Math.abs() zu verwenden, um die absolute Differenz zwischen den beiden Werten zu berechnen und dann festzustellen, ob dies der Fall ist Der Unterschied liegt innerhalb einer akzeptablen Toleranz.

Zum Beispiel verwendet das folgende Codefragment diesen Ansatz, um die Doppelwerte a und b zu vergleichen:

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

Durch Festlegen eines geeigneten Toleranzwerts, z. B. 0,000001 In diesem Beispiel können Sie feststellen, ob die Differenz zwischen den beiden Doppelwerten klein genug ist, um sie aus praktischen Gründen als gleich zu betrachten. Dieser Ansatz ermöglicht einen präziseren und konsistenteren Vergleich doppelter Werte und vermeidet die Fallstricke exakter Gleichheitsprüfungen.

Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Werte in Java genau vergleichen, um Diskrepanzen zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn