Vermeiden von Gleitkomma-Präzisionsfehlern mit Floats und Doubles in Java
In Java Operationen mit Gleitkommazahlen (Floats und Doubles) kann zu Präzisionsfehlern führen. Diese Fehler entstehen, weil Floats und Doubles Zahlen in binärer Form darstellen, die nicht für alle Dezimalwerte exakte Darstellungen liefert.
Bedenken Sie den folgenden Code:
for (float value = 0.0f; value < 1.0f; value += 0.1f) System.out.println(value);
Anstelle der erwarteten Werte Die Ausgabe zeigt Inkremente von 0,1 mit einer leichten Anhäufung von Fehlern an:
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.70000005 0.8000001 0.9000001
Behebung der Präzisionsfehler
Um dieses Problem zu vermeiden, ziehen Sie die folgenden Ansätze in Betracht:
BigDecimal step = new BigDecimal("0.1"); for (BigDecimal value = BigDecimal.ZERO; value.compareTo(BigDecimal.ONE) < 0; value = value.add(step)) { System.out.println(value); }
Dieser Code stellt den Wert genau dar und erhöht ihn um 0,1, wodurch die Anhäufung von Präzisionsfehlern vermieden wird.
Das obige ist der detaillierte Inhalt vonWie vermeide ich Gleitkomma-Präzisionsfehler in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!