Heim > Java > javaLernprogramm > Warum sollten Sie == nicht zum Vergleichen von Floats in Java verwenden?

Warum sollten Sie == nicht zum Vergleichen von Floats in Java verwenden?

Patricia Arquette
Freigeben: 2024-12-18 06:54:14
Original
279 Leute haben es durchsucht

Why Shouldn't You Use == to Compare Floats in Java?

Frage: Fallstricke bei der Verwendung von == für den Float-Vergleich in Java

Trotz seiner Präsenz als Gleichheitsoperator für Gleitkommazahlen in Java , == weist Einschränkungen beim Vergleich von Gleitkommazahlen auf, was durch statische Analysewarnungen wie „JAVA0078 Gleitkommawerte verglichen mit“ belegt wird ==".

Antwort: Das Präzisionsproblem

Gleitkommazahlen werden als Näherungen gespeichert und bei Operationen können Rundungsfehler auftreten. Folglich kann die Verwendung von == zum Vergleichen zweier Floats zu falsch negativen oder falschen Ergebnissen führen.

Der richtige Ansatz: Toleranzmarge

Der richtige Ansatz zum Vergleichen von Floats auf „Gleichheit“ Dabei wird geprüft, ob die absolute Differenz zwischen ihnen kleiner als ein vordefinierter Toleranzwert ist. Dadurch wird sichergestellt, dass der Vergleich Rundungsfehler berücksichtigt und mit der beabsichtigten Genauigkeit übereinstimmt:

if(Math.abs(sectionID - currentSectionID) < epsilon)
Nach dem Login kopieren

Auswahl des Epsilon-Werts

Die Auswahl eines geeigneten Epsilon-Werts hängt von der gewünschten Präzision ab. Für präzise Vergleiche werden kleinere Epsilon-Werte verwendet, während größere Epsilon-Werte größere Fehlermargen ermöglichen.

Das obige ist der detaillierte Inhalt vonWarum sollten Sie == nicht zum Vergleichen von Floats in Java verwenden?. 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