Decimal vs Integer

0

Hej, zaleca się żeby wartości pieniężne trzymać w typie Decimal w bazie danych. Mógłby ktoś wytłumaczyć czemu? Ostatnio pisałem aplikacje, trzymając wartości w integer przeliczanie vatu i inne operacje na tych liczbach działają wyśmienicie.

0

Zaleca się nie na darmo, bo ten typ daje taką jak trzeba precyzję do przechowywania wartości pieniężnych: https://dev.mysql.com/doc/refman/5.7/en/fixed-point-types.html

0

A co robisz jak chcesz w tym integerze zapisać grosze? Zapisujesz całą kwotę jako grosze?

0

Dokładnie, zapisuje całą kwotę jako groszę.

1

Decimal jest wizualnie bardziej intuicyjny w użyciu - kwoty zwyczajowo podaje się w złotówkach, dolarach itd., niż w groszach czy centach.

5

a jak potrzebujesz dokładność do 1/10 albo 1/100 grosza to co robisz? Bo normalnie to się rozszerza pole i tyle. A w przypadku integera przepisujesz pół aplikacji od nowa? To samo dotyczy ilości

0

@abrakadaber: Super przykład, tylko małe jest prawdopodobieństwo że coś pół gorsza będzie kosztować. Jeśli masz czas, mógłbyś więcej argumentów podać za decimalem?

4

żebyś się nie zdziwił z tym ułamkiem grosza, że to taki jednorożec. Stacje paliw rozliczają paliwo do 1/10 grosza, kantory mają do 1/100 grosza ceny, kiedyś miałem hurtownię, która sprzedawała towar w "tysiąco sztukach" - 1tyśszt kosztowała np. 3 zł. Nie dało się towaru kupić inaczej niż wielokrotności 1000 sztuk ale z jakiegoś powodu cena musiała być za sztukę a nie za 1000.
A co do argumentów to jeśli int jest dla Ciebie OK to number(xx, 4) (czy numeric(xx, 4)) powinien być jeszcze bardziej OK - w końcu to taki int tylko z dodatkową, stałą liczbą miejsc po przecinku. To tak jakbyś miał dwa pola zł i gr tylko lepsze i jako jedno pole

0

Co do tego że decimal nie jest reprezentowany wewnętrznie jako int, tylko string / binary - czyli korzystanie z intów jest po prostu szybsze?

0

Tak, jeśli robisz na nich PK.
Chyba nie robisz PK na kwocie? Proszę, napisz, że nie...

0

Z integerem może być problem przekroczenia zakresu. Musisz się zastanawiać, ile cyfr wejdzie bez przekłamania, bez przejścia na minus. A jak pójdzie super inflacja? Kto to przewidzi :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1