Zajmę przeciwne stanowisko.
FLOAT
jest dla przybliżonych liczb, takich jak procenty, średnie itp. Powinieneś formatować, wyświetlając wartości, albo w kodzie aplikacji, albo przy użyciu FORMAT()
funkcji MySQL.
Nigdy nie testuj float_value = 1.3
; istnieje wiele powodów, dla których to się nie powiedzie.
DECIMAL
należy stosować do wartości pieniężnych. DECIMAL
unika się drugiego zaokrąglania, gdy wartość należy zaokrąglić do dolarów / centów / euro / itp. Księgowi nie lubią ułamków centów.
Implementacja MySQL DECIMAL
pozwala na 65 cyfr znaczących; FLOAT
daje około 7 i DOUBLE
około 16. 7 jest zwykle więcej niż wystarczające dla czujników i obliczeń naukowych.
Jeśli chodzi o „procent” - czasami używam, TINYINT UNSIGNED
gdy chcę zużyć tylko 1 bajt pamięci i nie potrzebuję dużej precyzji; czasami użyłem FLOAT
(4 bajty). Nie ma typu danych dostosowanego specjalnie do wartości procentowej. (Należy również pamiętać, że DECIMAL(2,0)
nie może utrzymać wartości 100
, więc technicznie będziesz potrzebować DECIMAL(3,0)
.)
Lub czasami użyłem wartości FLOAT
, która miała wartość od 0 do 1. Ale wtedy musiałbym się upewnić, że pomnożymy przez 100, zanim wyświetli się „procent”.
Więcej
Wszystkie trzy „procentowe, średnie, częste” pachną jak pływaki, więc to byłby mój pierwszy wybór.
Jedno kryterium decydowania o typie danych ... Ile kopii wartości będzie istniało?
Jeśli masz tabelę zawierającą miliardy wierszy z kolumną procentową, rozważ, TINYINT
że zajmie to 1 bajt (łącznie 1 GB), ale FLOAT
zajmie 4 bajty (łącznie 4 GB). OTOH, większość aplikacji nie ma tylu wierszy, więc może to nie mieć znaczenia.
Zgodnie z ogólną zasadą w „dokładnych” wartościach należy stosować formę INT
lub DECIMAL
. Rzeczy niedokładne (obliczenia naukowe, pierwiastki kwadratowe, dzielenie itp.) Powinny używać FLOAT
(lub DOUBLE
).
Ponadto formatowanie danych wyjściowych należy zwykle pozostawić interfejsowi aplikacji. Oznacza to, że chociaż „średnia” może być obliczona na „14.6666666 ...”, wyświetlacz powinien pokazywać coś w rodzaju „14.7”; jest to bardziej przyjazne dla ludzi. Tymczasem masz podstawową wartość, aby później zdecydować, że preferowanym formatowaniem wyjściowym jest „15” lub „14.667”.
Zakres „0,00 - 100,00” można wykonać przy FLOAT
użyciu formatowania wyjściowego lub przy użyciu DECIMAL(5,2)
(3 bajtów) z wcześniejszym ustaleniem, że zawsze będzie wymagana wskazana dokładność .