Объясните как работает тип данных decimal(n,n2)
Что означают параметры n и n2 ? Мне нужно хранить денежный баланс в бд
Ответы (1 шт):
DECIMAL(N, N2)
N - количество знаков всего. N2 - из них после запятой.
Например, DECIMAL(5,2) - это число с 3-я (5-2) знаками до запятой и 2-я после. От -999.99 до 999.99
Кроме типа DECIMAL, есть еще очень близкий тип NUMERIC. По стандарту отличие в том, что NUMERIC обеспечивает ровно заданную точность, а DECIMAL может иметь большую, включающую указанную.
В некоторых СУБД это полные синонимы. А, например, в СУБД Interbase для DECIMAL(4,2) в качестве базового типа будет выбран Short Int, и в него можно записать числа от -327.68 до 327.67, а не от -99.99 до 99.99. Для DECIMAL(12,2) в качестве базового будет Double Precision, и можно будет записать довольно длинные числа.
Для хранения денег, как правило используют максимальное значение N, доступное для выбранной СУБД, а N2 = 2, потому что у большинства валют дробление идет до сотой доли (копейка, цент ...)
В некоторых СУБД есть специализированные типы для денег, например MS SQL MONEY является синонимом для NUMERIC(18,4).