Also, ich plane, eine Anwendung (PHP/MySQL) zu machen, die viel mit Geld beschäftigt, und ich denke darüber nach, wie man mit dem Geld speichert und operiert, unter Bezugnahme auf PHP float data type und MySQL decimal.PHP/MySQL: Beste Geldoperationen/Speicherpraktiken?
Ich dachte an zwei Optionen. Eine davon ist das Betreiben und Speichern von Geld im Integer-Cents-Format ($ dollars * 100), um sich nicht mit Float-in-exprections auseinanderzusetzen und es als Integer in der DB zu speichern. Der andere ist, in DB als Dezimal zu speichern und BC Math in PHP für Berechnungen zu verwenden.
So googelte ich die ganze Nacht, um herauszufinden, welche die beste Option zu verwenden ist und keine klare Antwort gefunden. Die einzige vernünftige Option, die ich gesehen habe, war die Ganzzahl Cents One (was ich nicht wirklich mag, weil es vor jeder Anzeige im Browser und vor dem Speichern in der DB eine Menge Konvertierung von Dollar in Cent und umgekehrt bedeuten würde) .
Auch haben sich Leute über MySQL dezimal beschwert (MySQL speichert Dezimalzahlen als Strings, betreibt sie als Floats usw.), aber das waren alte Posts. Laut der MySQL-Dokumentation behandelt die aktuelle Version Dezimalzahlen korrekt. Die einzige Beschwerde bestand darin, dass sie den Anteil der Werte schneidet, der die deklarierte Bruchlänge überschreitet (zB wenn Sie einen Wert von 12.326 in einer deklarierten Spalte speichern (9,2)). , aber von meinen Nachforschungen rundet es ab, anstatt nur abzuschneiden (12.326 wird zu 12.33), was meiner Meinung nach richtig ist.
Und ich habe keine Empfehlung gefunden, Geld als Dezimalzahlen zu speichern und Berechnungen mit PHP BCMath durchzuführen, und meiner Meinung nach ist das so, weil nur wenige Leute von BC und GMP mathematischen Funktionen wissen.
Also, was wäre die beste Option zu verwenden, in Anbetracht Präzision, Geschwindigkeit (BCMath Berechnungen Geschwindigkeit, MySQL Dezimalgeschwindigkeit vs Integer) und Programmierkomfort?
Obwohl er ein wenig spät für die OP, für alle Interessierten, ich Open-Source eine [PHP Money-Bibliothek] (https://github.com/brick/money), die sichere Berechnungen für Geldbeträge jeder Größe durchführt, wobei reines PHP, GMP oder BCMath basierend auf den verfügbaren Daten verwendet wird. Oh, und ich speichere meine Gelder als Ganzzahlen in der Datenbank. – Benjamin