Como posso interpretar precisão e escala de um número em uma base de dados?
tenho a seguinte coluna especificada numa base de dados: decimal (5,2)
Como se interpreta isto?de acordo com as propriedades na coluna, tal como vistas no SQL Server Management studio, posso ver que significa: decimal(precisão numérica, escala numérica).
O que significa precisão e escala em termos reais?seria fácil interpretar isto como uma casa decimal com 5 dígitos e duas casas decimais. places...ie 12345, 12
P. S. capaz de determinar a resposta correta de um colega, mas teve grande dificuldade em encontrar uma resposta online. Como tal, eu gostaria de ter a pergunta e resposta documentada aqui em stackoverflow para referência futura.3 answers
A precisão numérica refere-se ao número máximo de dígitos que estão presentes no número.
Ie 1234567,89 tem uma precisão de 9
A escala numérica refere-se ao número máximo de casas decimais
Ie 123456.789 tem uma escala de 3
Assim, o valor máximo permitido para as casas decimais (5,2) é 999.99
A precisão de um número é o número de dígitos.
Escala de um número é o número de dígitos após o ponto decimal.
O que é geralmente implícito ao definir a precisão e escala na definição de campo é que eles representam Os valores máximos.
Exemplo, um campo decimal definido com precision=5
e scale=2
permitiria os seguintes valores:
-
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)
Os seguintes valores não são permitidos ou causariam uma perda de Dados:
-
12.345
(p=5,s=3) => pode ser truncado em12.35
(p=4, s=2) -
1234.56
(p=6,s=2) => pode ser truncado em1234.6
(p = 5, s = 1) -
123.456
(p=6,s=3) => pode ser truncado em123.46
(p = 5, s = 2) -
123450
(p=6,s=0) = > fora da Gama
Note que a gama é geralmente definida pela precisão: |value| < 10^p
...
Precisão, Escala e comprimento na documentação do SQL Server 2000 lê-se:
Precisão é o número de algarismos num número. Escala é o número de dígitos à direita do ponto decimal em um número. Por exemplo, o número 123.45 tem uma precisão de 5 e uma escala de 2.