Der Martin: Max eines float in mysql abrufen?

Beitrag lesen

Hallo,

Ich hatte angenommen dass 1.000.000,00 die offizielle deutsche und 1,000,000.00 die offizielle amerikanische Schreibweise ist. Ich glaube auch Betriebssysteme und Officeprogramme haben das so voreingestellt...

ja, meistens. Leider.

Auf jeden Fall scheint jetzt erstmal das Rechenproblem für mysql behoben zu sein. Jetzt hab ich das selbe Problem in php selbst.

Klar, das wirst du in allen Programmiersprachen haben, die herkömmliche Fließkommaarithmetik benutzen.

Bis 5 Stellen nach dem Komma ist es ja korrekt. Aber es scheint hier wohl wieder eine Ungenauigkeit zu geben. Ich habe gesucht aber für php keinen Datentyp speziell für Währungsoperationen gefunden. Den muss es aber geben da ja auch andere Webseiten mit Finanzen rechnen und man sich keine Ungenauigkeiten erlauben kann. Einfach abschneiden ist sicher auch keine Lösung da es sicher auch Ergebnisse wie 0.0752399999999999 geben könnte.

Falls du keine langen Multiplikationsketten hast, kannst du dich aus der Affäre ziehen, indem du intern alle Beträge ganzzahlig in Cent speicherst. Additionen, Subtraktionen und Multiplikationen von Ganzzahlen sind exakt (solange kein Überlauf stattfindet).

Sobald du aber Rechenschritte hast, die der Genauigkeit wegen mit Bruchteilen von Cent arbeiten müssen (Zinseszins, Währungsumrechnung o.ä.), ist das auch keine gute Idee mehr. Überlege also, ob das für deine Anwendung eine Lösung sein könnte.

Wie löst man das? Hier: http://php.net/manual/de/language.types.float.php habe ich nur gelesen dass es ungenau ist und man das hier benutzen soll: http://php.net/manual/de/ref.bc.php

Ich kann mir aber etwas schwer vorstellen dass alle Finanzseiten anstatt eines normalen Minus immer diese Funktionen benutzen...

Zumal man dann die Werte immer als String vorhalten muss anstatt als echte Zahlenwerte. Aber alle anderen Möglichkeiten, die mir für PHP einfallen, sind eben nur Workarounds, die in vielen Fällen brauchbar sind, aber eben nicht in jedem Fall.

So long,
 Martin

--
Der Bäcker schlägt die Fliegen tot
Und macht daraus Rosinenbrot.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(