Moin!
ich habe ein Problem mit der Funktion round().
Eher mit der internen binären Darstellung von Dezimalzahlen.
Per Datenbankabfrage erhalte ich ein Varchar 81.225.
Das ist zu diesem Zeitpunkt ein String.
Dieses will ich nun auf 2 Nachkommastellen runden. Also nutze ich die Funktion round(). Nur wenn ich round(zahl,2) auf diese Zahl anwende kommt am Ende 81.22 heraus. Es rundet also nicht mathematisch korrekt.
Wenn 81,225 binär nur als 81.2249999999999 dargestellt werden kann, dann ist das Rundungsverhalten erklärlich, und wäre korrekt.
Warum lässt du die Datenbank nicht schon runden? Oder setzt Stringfunktionen zur Erzielung von "korrekter" Rundung ein. Gibt zu dem Thema auf der Handbuchseite von round() eigentlich genug Userkommentare und Lösungen.
Bei der Beschreibung zu round() wird ein dritter Parameter beschrieben wo man die Rundungsart angeben könne. Trotzdem soll Standard das mathematische runden sein. Aber ich kann diesen dritten Parameter nicht angeben. Weder phpEd glaubt es gibt einen dritten Parameter noch der Server der mit Fehlermeldung antwortet.
Setzt du schon PHP 5.3.0 ein? Erst damit existiert dieser Parameter. Steht so aber auch in der Doku drin - ein Blick auf den Abschnitt "Changelog" lohnt sich immer.
- Sven Rautenberg