Hi!
erhalte ich manchmal Ausgaben wie z.B.: 1.9000000000000001.
Ich vermute, das hängt im der internen Darstellung (dualsystem) der doubles zusammen.
Ja.
auch folgendes funktioniert nicht:
double minRes = 0.001;
myDouble = (Math.round(myDouble / minRes )) * minRes ;
mylabel.setText(String.valueOf(myDouble));
"Funktioniert nicht" funktioniert nicht als Fehlerbeschreibung. Ich will und kann es jetzt nicht nachstellen. Also wenn es wichtig ist, beschreibe was passiert und was du gern hättest.
> Wichtig ist, dass die Anzahl der gewünschten Nachkommstellen (minRes) variabel ist.
Was bedeutet das "variabel" genau? Meinst du, dass du soviele Stellen kommen sollen, wie es sind und du keine Anzahl festlegen willst? Es gibt auch beim dezimalen Rechnen Ergebnisse, die unendlich lang werden können.
> Wie könnte ich das Problem lösen?
Runde mit einer festen (Maximal-)Stellenanzahl. Trimme gegebenenfalls rechts stehende Nullen weg.
Nimm einen Datentyp, der das Problem der binären Speicherung nicht hat. Bei Geldbeträgen beispielsweise ist es ungünstig, wenn sich solche "Rundungsfehler" ergeben. Suche, wie man mit Geldbeträgen sicher rechnet. Unter PHP gibt es Extensions, die dezimal rechnen (BC Math, GMP). Da gibt es garantiert auch was für Java.
Lo!