Ответ 1
Числовое задает TOTAL количество цифр, а затем число после десятичного числа.
Числовое (3,2) может содержать только 9.99.
У меня есть ошибка, которую SQL Server Management Studio вызывает при запуске этого кода:
declare @percentage numeric(3,2)
set @percentage = cast(15 as numeric(3,2))
но когда я изменяю числовое объявление на
declare @percentage numeric(4,2)
set @percentage = cast(15 as numeric(4,2))
все идет хорошо.
Есть ли ограничение на числовой тип данных?
Числовое задает TOTAL количество цифр, а затем число после десятичного числа.
Числовое (3,2) может содержать только 9.99.
Посмотрим, числовое (3,2). Это означает, что у вас есть 3 места для данных, а два из них находятся справа от десятичной дроби, оставляя только одну слева от десятичной. 15 имеет два места слева от десятичной дроби. BTW, если у вас может быть 100 в качестве значения, я бы увеличил его до числового (5, 2)
NUMERIC(3,2)
означает: всего 3 цифры, 2 после десятичной точки. Таким образом, у вас есть только одна десятичная цифра до десятичной точки.
Попробуйте NUMERIC(5,2)
- три раньше, два после десятичной точки.
Точность и масштаб часто недопонимаются. В числовом (3,2) вам нужно 3 цифры в целом, но 2 справа от десятичной. Если вы хотите 15 = > 15.00, поэтому ведущий 1 вызывает переполнение (поскольку, если вы хотите, чтобы две цифры справа от десятичной точки, есть только комната слева для еще одной цифры). С 4,2 нет проблем, потому что все 4 цифры подходят.