Heim > Java > javaLernprogramm > Wie kann ich Doppelwerte in Java genau vergleichen?

Wie kann ich Doppelwerte in Java genau vergleichen?

Linda Hamilton
Freigeben: 2024-12-27 18:57:21
Original
589 Leute haben es durchsucht

How Can I Accurately Compare Double Values in Java?

Doppelte Werte in Java effektiv vergleichen

In Java kann der Vergleich zweier doppelter Werte mit dem Gleichheitsoperator (==) zu unerwarteten Ergebnissen führen aufgrund der inhärenten Genauigkeitsbeschränkungen der Gleitkomma-Arithmetik. Um dies zu überwinden, ist es wichtig, alternative Ansätze für den effektiven Vergleich doppelter Werte zu übernehmen.

Betrachten Sie das folgende Beispiel:

double a = 1.000001;
double b = 0.000001;

boolean result = (a - b) == 1.0;
Nach dem Login kopieren

Überraschenderweise ergibt dieser Vergleich falsch, obwohl dies intuitiv so sein sollte WAHR. Dies liegt daran, dass die Subtraktionsoperation (a – b) 0,9999999999999999 ergibt, was etwas weniger als 1,0 ist.

Um dieses Problem anzugehen, besteht ein robusterer Ansatz darin, eine Fehlermarge oder Delta zu verwenden, innerhalb derer Die Werte können als gleich angesehen werden. Eine Möglichkeit, dies zu implementieren, ist die Verwendung von Math.abs():

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

boolean result = Math.abs(a - b - 1.0) <= delta;
Nach dem Login kopieren

Wenn in diesem Fall die absolute Differenz zwischen (a – b) und 1,0 kleiner oder gleich dem vordefinierten Delta von 0,000001 ist, Der Vergleich wird als wahr ausgewertet. Dieser Ansatz ermöglicht genauere Vergleiche und berücksichtigt gleichzeitig potenzielle Präzisionsfehler.

Das obige ist der detaillierte Inhalt vonWie kann ich Doppelwerte in Java genau vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage