Как мне интерпретировать точность и масштаб числа в базе данных? - PullRequest
214 голосов
/ 04 марта 2010

У меня есть следующий столбец, указанный в базе данных: десятичный (5,2)

Как можно это интерпретировать?

В соответствии со свойствами столбца при просмотре в SQL Server Management Studio видно, что это означает: десятичное число (точность чисел, числовой масштаб).

Что означают точность и масштаб в реальном выражении?

Было бы легко интерпретировать это как десятичную с 5 цифрами и двумя десятичными разрядами ... т.е. 12345.12

P.S. Мне удалось определить правильный ответ от коллеги, но мне было очень трудно найти ответ в Интернете. Поэтому я хотел бы, чтобы вопрос и ответ были задокументированы здесь на stackoverflow для дальнейшего использования.

Ответы [ 3 ]

352 голосов
/ 04 марта 2010

Числовая точность относится к максимальному количеству цифр, присутствующих в числе.

то есть 1234567,89 имеет точность 9

Числовая шкала относится к максимальному количеству десятичных знаков

т.е. 123456,789 имеет шкалу 3

Таким образом, максимально допустимое значение для десятичного числа (5,2) составляет 999,99

76 голосов
/ 20 марта 2013

Точность числа - это количество цифр.

Масштаб числа - это количество цифр после десятичной точки.

Что обычно подразумевается при установке точности и масштаба в определении поля, так это то, что они представляют максимум значений.

Например, десятичное поле, определенное с precision=5 и scale=2, допускает следующие значения:

  • 123.45 (р = 5, с = 2)
  • 12.34 (р = 4, с = 2)
  • 12345 (р = 5, с = 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 ...

21 голосов
/ 20 ноября 2012

Точность, масштаб и длина в документации по SQL Server 2000 гласит:

Точность - это количество цифр в числе. Шкала - это число цифр справа от десятичной точки в числе. Например, число 123,45 имеет точность 5 и масштаб 2.

...