2012-03-20 8 views
7

Obecnie MySQL w wersji 5.1.6Mając szorstka razem zdecydowaliśmy się na float, double, lub DZIESIĘTNY

To mój pierwszy build prawdziwy świat i tak daleko I rzeczywiście cieszy go; jednak teraz utknąłem na decyzji dotyczącej typu danych pola i mam nadzieję, że ktoś może to dla mnie rozwiązać.

Zasadniczo mam 10 pól, które są różnymi wynikami testów. Liczby mieszczą się w przedziale od -100 do 100 i mogą mieć wartości dziesiętne z jednym punktem po rzeczywistym punkcie.

Na przykład: -5.1, 0, 1, 16,3, 99,2 i 100 to wszystkie możliwe dane. Z tego co przeczytałem, należy używać DECIMAL do tych rzeczy, które zwykle mierzymy i które są dokładne (które to są), podczas gdy FLOAT i DOUBLE są przybliżeniami, których tak naprawdę nie chcę (choć jestem pewien na tym poziomie, aproksymacja jest bardzo mały, jeśli w ogóle istnieje).

Jeśli korzystam z DECIMAL, czy muszę na początku wstawić spację dla "-"? I.E, czy użyłbym DECIMAL (4,1) lub DECIMAL (5,1), czy też jestem stąd daleko? Być może trochę to przesadzam.

+0

Więc twoje pytanie jest tak naprawdę tylko o tym, jak powinieneś wybrać wymiarowy argument na "DECIMAL"? A całe gadulstwo na temat 'FLOAT' i' DECIMAL' jest zbędne? A co powiesz na czytanie [dokumentacji] (http://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html)? –

Odpowiedz

4

Symbol ujemny NIE jest liczony jako cyfra w obliczeniach, dlatego DECIMAL (4,1) powinien być w porządku.

Edytuj: To również wydaje się być odpowiednim polem do wykorzystania dla twoich celów. Wypróbuj to!

+0

Oba twoje odpowiedzi pomogły mi, ale odkąd twój był pierwszy wybrałem to najlepiej. Dzięki! – shelzmike

6

DECIMAL(4,1) będzie wystarczająca, cyfra sygnatury nie będzie zawierała ani.

Więcej informacji: http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html

Na przykład kolumna DECIMAL(3,0) wspiera szereg -999 do 999

dziesiętny będzie rzeczywiście najlepszym rozwiązaniem dla Twoich potrzeb. Float i Double mogą dać ci brzydkie liczby (np. 0.2 nie może być reprezentowane jako zmiennoprzecinkowe, dostaniesz 0.19999999)

Powiązane problemy