PHP / MySQL: Najlepsze operacje na pieniądze / przechowywanie?

Dlatego planuję stworzyć aplikację (PHP / MySQL), która dużo kosztuje, a ja myślę o tym, jak przechowywać i działać z pieniędzmi, odnosząc się do typu danych float PHP i dziesiętnego MySQL.

Myślałem o dwóch opcjach. Jednym z nich jest obsługa i przechowywanie pieniędzy w formacie centów całkowitych ($ $ * 100), aby nie zajmować się nieprecyzyjnymi pływami i przechowywać ich w DB jako liczbę całkowitą. Drugi to przechowywanie w DB jako dziesiętne i używanie BC Math w PHP do obliczeń.

Sprawdziłem więc całą noc, aby dowiedzieć się, która opcja jest najlepsza i nie znalazłem jasnej odpowiedzi. Jedyną rozsądną opcją, jaką widziałem, była liczba całkowita po centach (co tak naprawdę mi się nie podoba, ponieważ oznaczałoby to wiele konwersji z dolarów na centy i odwrotnie przed każdym wyświetleniem w przeglądarce i przed zapisaniem w DB).

Ponadto ludzie skarżyli się na dziesiętny MySQL (MySQL przechowuje liczby dziesiętne jako ciągi, obsługuje je jako zmiennoprzecinkowe itp.), Ale były to stare posty. Zgodnie z dokumentacją MySQL, bieżąca wersja obsługuje poprawnie wartości dziesiętne, jedyną skargą było to, że obcina ułamek wartości przekraczających deklarowaną długość ułamka (np. Jeśli zachowasz wartość 12.326 w kolumnie deklarowanej dziesiętnie (9,2)) , ale z moich badań zaokrągla to, a nie tylko obcina (12.326 staje się 12.33), co moim zdaniem jest poprawne.

I nie znalazłem żadnej rekomendacji dotyczącej przechowywania pieniędzy jako miejsc dziesiętnych i dokonywania obliczeń za pomocą PHP BCMath, a moim zdaniem jest tak, ponieważ niewiele osób wie o funkcjach matematycznych BC i GMP.

Więc jaka byłaby najlepsza opcja, biorąc pod uwagę precyzję, prędkość (prędkość obliczeń BCMath, prędkość dziesiętna MySQL w stosunku do liczby całkowitej) i komfort programowania?

questionAnswers(2)

yourAnswerToTheQuestion