[SQL] Przechowywanie ceny w bazie


(Lysy1033) #1

Witam kolegów ponownie.

Pisząc sobie serwis natrafiłem na dość poważny problem. Otóż zupełnie nieświadomy wybrałem float jako typ danych do przechowywania cen, kwot itd. Pierwszy problem pojawił się gdy dodałem towar z ceną po przecinku np 30.20 ...

Samo przetrzymywanie odbyło się w miarę poprawnie ale po wywołaniu zapytania aby zsumował ceny wszystkich produktów z danej kategorii pojawiły się ceny typu: 213212.123121021012315489.

Teraz pytanie. co zrobić z takim problemem? czy ustawić jakiś inny typ danych czy jakoś to uśredniać czy jeszcze coś innego?

z tego co wiem o trzymaniu liczb zmiennoprzecinkowych takie sytuacje właśnie mają miejsca. używam mysql i phpmyadmina do tworzenia bazy. Mówcie co robić.

edit: jak zwykle jak coś napiszę na forum to za chwilkę sam znajdę rozwiązanie lub ktoś mnie naprowadzi. a więc tym razem rozwiązaniem jest typ DECIMAL(6,2) (2 po przecinku 6 przed przecinkiem)


(_mnich) #2

oczywiście że nie 6 przed przecinkiem tylko

4 przed przecinkiem i 2 po przecinku :smiley: