Zajmę przeciwne stanowisko.
FLOATjest 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.
DECIMALnależy stosować do wartości pieniężnych. DECIMALunika 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 DECIMALpozwala na 65 cyfr znaczących; FLOATdaje około 7 i DOUBLEokoł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 UNSIGNEDgdy 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 FLOATzajmie 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ę INTlub 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ść .