Heim >Java >javaLernprogramm >Wie vermeide ich Präzisionsfehler in der Java-Doppelarithmetik?
So beseitigen Sie Präzisionsprobleme mit der Java-Doppelarithmetik
In bestimmten Szenarien kann die Gleitkommaarithmetik in Java zu unerwarteten Rundungsproblemen führen, z wie im bereitgestellten Subtraktionsbeispiel:
double tempCommission = targetPremium.doubleValue()*rate.doubleValue()/100d; double netToCompany = targetPremium.doubleValue() - tempCommission; double dCommission = request.getPremium().doubleValue() - netToCompany;
Hier ist das gewünschte Ergebnis für dCommission 877,85, wird aber stattdessen als 877,8499999999999 berechnet. Diese Diskrepanz entsteht durch Genauigkeitseinschränkungen bei der Gleitkomma-Arithmetik.
Um dieses Problem zu beheben, besteht die optimale Lösung darin, die Klasse java.math.BigDecimal zu verwenden. BigDecimal bietet präzise Berechnungen und kontrolliert effektiv die Präzision der Gleitkomma-Arithmetik. So können Sie es im gegebenen Beispiel implementieren:
import java.math.BigDecimal; BigDecimal premium = BigDecimal.valueOf("1586.6"); BigDecimal netToCompany = BigDecimal.valueOf("708.75"); BigDecimal commission = premium.subtract(netToCompany); System.out.println(commission + " = " + premium + " - " + netToCompany);
Dieser Code führt zur gewünschten Ausgabe:
877.85 = 1586.6 - 708.75
Durch die Verwendung von BigDecimal stellen Sie genaue Berechnungen sicher, ohne Kompromisse bei der Präzision einzugehen.
Das obige ist der detaillierte Inhalt vonWie vermeide ich Präzisionsfehler in der Java-Doppelarithmetik?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!