Thomas Meinike: round() - Rundungsfehler?

Beitrag lesen

Hallo,

Problem: Ich möchte das Ergebnis einer Rechnung kaufmännisch runden (sprich: wenn die Zahl die ich "wegschneide" eine 5 ist, wird aufgerundet).
Nun bekomme ich bei einem Beispiel einen Wert von 1.025 raus, den ich auf 2 Stellen runden will --> Ergebnis SOLLTE 1.03 sein, der round()-Befehl, der laut Doku kaufmännisch runde wirft mir 1.02 (schneidet den Wert also nur weg).

Die round()-Funktion rundet mathematisch und schneidet nichts weg:

1.025 --> 1.02 (5 nach gerader Zahl abrunden)
1.075 --> 1.08 (5 nach ungerader Zahl aufrunden)

Ist das ein bekannter Bug? Wenn ja, gibt dafür bereits fertige Funktionen, die das richtig machen?

print round(1.025*100+0.5)/100; // --> 1.03

MfG, Thomas