Odpowiedzi:
DECIMAL(18,0)
pozwoli 0 cyfr po przecinku.
Użyj czegoś takiego, DECIMAL(18,4)
co powinno wystarczyć!
To daje w sumie 18 cyfr , z czego 4 po przecinku (i 14 przed przecinkiem).
decimal(4,2)
dopuszcza 2 cyfry przed i 2 cyfry po przecinku. „4.5” można zapisać bez problemu - i liczbowo „4.5” i „4.50” są identyczne
varchar
do przechowywania wartości dziesiętnej !!
Powinieneś użyć w następujący sposób:
DECIMAL(m,a)
m
to liczba cyfr, które może zawierać dziesiętny.
a
to maksymalna liczba cyfr, jaką możesz mieć po przecinku.
http://www.tsqltutorials.com/datatypes.php zawiera opisy wszystkich typów danych.
Ustawieniami Decimal
są jego dokładność i skala lub w normalnym języku, ile cyfr może mieć liczba i ile cyfr chcesz mieć po prawej stronie przecinka dziesiętnego.
Więc jeśli umieścisz PI
w Decimal(18,0)
będzie rejestrowane jako 3
?
Jeśli umieścisz PI
w Decimal(18,2)
będzie rejestrowane jako 3.14
?
Jeśli położy PI
się Decimal(18,10)
być rejestrowane jako 3.1415926535
.
Przez większość czasu używam dziesiętnych (9,2), które zajmują najmniej miejsca (5 bajtów) w formacie dziesiętnym sql.
Precyzja => Bajty pamięci
Może przechowywać od 0 do 9 999 999,99 (7 cyfr w przód + 2 cyfry za przecinkiem = ogółem 9 cyfr), co jest wystarczająco duże dla większości wartości.
W MySQL DB decimal(4,2)
pozwala na wprowadzenie tylko 4 cyfr. Jak widzisz decimal(4,2)
, oznacza to, że możesz wprowadzić łącznie 4 cyfry, z których dwie cyfry mają być przechowywane po przecinku.
Tak więc, jeśli wpiszesz 100.0 w bazie danych MySQL, wyświetli się błąd typu „Wartość poza zakresem dla kolumny”.
Możesz więc wpisać tylko w tym zakresie: od 00.00 do 99,99.
Pozostałe odpowiedzi są prawidłowe. Zakładając, że twoje przykłady odzwierciedlają pełen zakres możliwości, czego potrzebujesz DECIMAL(3, 1)
. Lub DECIMAL(14, 1)
pozwoli w sumie 14 cyfr. Twoim zadaniem jest zastanowienie się, co wystarczy.