Объясните как работает тип данных 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).

→ Ссылка