Как интерпретировать точность и масштаб числа в базе данных?
У меня есть следующий столбец, указанный в базе данных: десятичный (5,2)
Как это интерпретировать?
В соответствии со свойствами столбца, рассмотренными в студии SQL Server Management, я вижу, что это означает: десятичное (числовая точность, числовая шкала).
Что означают точность и масштаб в реальном выражении?
Было бы легко интерпретировать это как десятичную цифру с 5 цифрами и двумя десятичными запятыми... т.е. 12345.12
P.S. Я смог определить правильный ответ от коллеги, но с большим трудом нашел ответ в Интернете. Таким образом, я хотел бы задать вопрос и ответ, описанный здесь, в stackoverflow для дальнейшего использования.
Ответы
Ответ 1
Числовая точность относится к максимальному числу цифр, присутствующих в номере.
т.е. 1234567.89 имеет точность 9
Числовая шкала относится к максимальному числу десятичных знаков
т.е. 123456,789 имеет шкалу от 3
Таким образом, максимальное допустимое значение для десятичного (5,2) равно 999.99
Ответ 2
Точность числа - это количество цифр.
Масштабирование числа - это число цифр после десятичной точки.
Что обычно подразумевается при настройке точности и масштаба в определении поля, так это то, что они представляют значения максимум.
Пример: десятичное поле, определенное с помощью precision=5
и scale=2
, позволит использовать следующие значения:
-
123.45
(p = 5, s = 2)
-
12.34
(p = 4, s = 2)
-
12345
(p = 5, s = 0)
-
123.4
(p = 4, s = 1)
-
0
(p = 0, s = 0)
Следующие значения не допускаются или могут привести к потере данных:
-
12.345
(p = 5, s = 3) = > можно усечь в 12.35
(p = 4, s = 2)
-
1234.56
(p = 6, s = 2) = > можно усечь в 1234.6
(p = 5, s = 1)
-
123.456
(p = 6, s = 3) = > можно усечь в 123.46
(p = 5, s = 2)
-
123450
(p = 6, s = 0) = > вне диапазона
Обратите внимание, что диапазон обычно определяется точностью: |value| < 10^p
...
Ответ 3
Точность, масштаб и длина в документации SQL Server 2000:
Точность - это число цифр в числе. Масштаб - это число цифр справа от десятичной точки в числе. Например, число 123.45 имеет точность 5 и шкалу 2.