Heim > Java > javaLernprogramm > Wie kann man Doppelwerte in Java zuverlässig vergleichen und Genauigkeitsfehler vermeiden?

Wie kann man Doppelwerte in Java zuverlässig vergleichen und Genauigkeitsfehler vermeiden?

Linda Hamilton
Freigeben: 2024-12-10 20:45:11
Original
594 Leute haben es durchsucht

How to Reliably Compare Double Values in Java and Avoid Precision Errors?

Doppelwertvergleich in Java: Präzisionsfehler beheben

Der Vergleich doppelter Werte in Java kann aufgrund möglicher Präzisionsfehler eine knifflige Aufgabe sein. Ein einfacher Vergleich, wie der unten gezeigte, kann zu unerwarteten Ergebnissen führen:

double a = 1.000001;
double b = 0.000001;

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

Dieser Code gibt „falsch“ aus, da die Subtraktionsoperation 0,9999999999999999 ergibt, was nicht unbedingt 1,0 entspricht. Um dieses Problem zu lösen, benötigen wir eine präzisere Vergleichsmethode.

Ein Ansatz besteht darin, die absolute Differenz zwischen den beiden Werten zu berechnen und sie mit einem kleinen Toleranzwert zu vergleichen. Beispiel:

double c = Math.abs(a - b - 1.0);
boolean result = (c <= 0.000001); // True
Nach dem Login kopieren

Dieser Code führt eine Toleranz von 0,000001 ein. Solange also die absolute Differenz zwischen c und 1,0 innerhalb dieses Bereichs liegt, wird der Vergleich als wahr ausgewertet. Die Math.abs()-Methode stellt sicher, dass der Absolutwert berücksichtigt wird und etwaige Vorzeichenunterschiede außer Acht gelassen werden.

Durch die Verwendung dieser Technik können wir mögliche Präzisionsfehler berücksichtigen und zuverlässige Vergleiche doppelter Werte durchführen. Dieser Ansatz ist besonders nützlich, wenn mit Gleitkommadaten gearbeitet wird, bei denen genaue Gleichheitsvergleiche nicht immer praktikabel sind.

Das obige ist der detaillierte Inhalt vonWie kann man Doppelwerte in Java zuverlässig vergleichen und Genauigkeitsfehler vermeiden?. 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