Die folgende Routine wird voraussichtlich zurückgeben, aber stattdessen gibt 0.9999999999999999 zurück.So vermeiden Sie Berechnungsfehler mit Primitiven
double sum = 0;
for(int i=0; i<10; i++){
sum+=0.1;
}
System.out.println(sum);
Der gleiche Fehler tritt auch bei anderen Java-mathematischen Operationen auf.
Gibt es eine Möglichkeit, dieses Problem zu vermeiden?
Vielen Dank im Voraus.
Es ist kein Fehler. Es ist die Natur von Fließkommaoperationen. – meskobalazs
Gleitkommaarithmetik ist inhärent ungenau. Du könntest es mit '' 'BigDecimal''' versuchen, aber das ist viel langsamer. –
Ich nehme an, Sie könnten es runden, wenn Sie nur ganze Zahlen brauchen – Zac