Qual é a diferença entre precisão e escala?

141

Qual é a diferença entre precisão e escala no Oracle? Nos tutoriais, eles geralmente deixam a escala vazia e definem a precisão como 6 ao criar uma chave primária.

O que significam precisão e escala?

user700792
fonte

Respostas:

203

Precisão 4, escala 2: 99,99

Precisão 10, escala 0: 9999999999

Precisão 8, escala 3: 99999.999

Precisão 5, escala -3: 99999000

koljaTM
fonte
15
você pode explicar o comportamento de escalas negativas?
21714 Geek
2
olhares como rounds / ignora que muitos valores inteiros esquerda do decimal
JDPeckham
3
lembre-se de que a precisão sempre inclui a parte da balança. por exemplo: Precisão 4, escala 2 - falhará em qualquer número> 99.9999 ..; tente: selecione o elenco (99.99999 como NÚMERO (4,2)) de dual; //ESTÁ BEM; selecione elenco (100,9 como NÚMERO (4,2)) de dual; //FALHOU;
Jama Djafarov 06/0315
@JamaDjafarov 99.99999 falha, como pode ser visto abaixo: `21:53:54 CB900 @ XYZ> selecione o elenco (99.99999 como NÚMERO (4,2)) do dual; selecione conversão (99.99999 como NÚMERO (4,2)) do duplo * ERRO na linha 1: ORA-01438: valor maior que a precisão especificada permitida para esta coluna 21:52:32 CB900 @ ASCEND1> selecione a versão de v $ instance; VERSÃO ------------------------------------------------- - 12.1.0.2.0 `
Phalgun
@Phalgun select cast (99.9999 como NUMBER (4,2)) de DUAL; é um mau exemplo, porque o truncamento arredondará o número de 99 para 100, que é muito grande para um NÚMERO (4,2). Tente selecionar o elenco (88,8888 como NÚMERO (4,2)) de DUAL; em vez disso, ver a resposta é 88,89.
0025 superbeck
58

Precisão é o número de dígitos significativos. A Oracle garante a portabilidade de números com precisão variando de 1 a 38.

Escala é o número de dígitos à direita (positivo) ou à esquerda (negativo) do ponto decimal. A escala pode variar de -84 a 127.

No seu caso, ID com precisão 6 significa que não aceitará um número com 7 ou mais dígitos significativos.

Referência:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

Essa página também tem alguns exemplos que farão você entender a precisão e a escala.

manojlds
fonte
1
isso significa que o último número será 1000000?
user700792
9
+1: Eu acho que a chave para entender isso é entender o formato interno do número - mantissa e expoente. A precisão coloca um limite no comprimento possível da mantissa e a escala coloca um limite no possível mínimo de expoente.
precisa
@DavidAldridge eu eco você. Eu acho que você deveria considerar publicá-lo como uma resposta sobre a mantissa e expoente. Um número é realmente armazenado em um formato de comprimento variável.
Lalit Kumar B
55

Precisão é o número total de dígitos, pode estar entre 1 e 38.
Escala é o número de dígitos após o ponto decimal, também pode ser definido como negativo para arredondamentos.

Exemplo:
NÚMERO (7,5): 12.12345
NÚMERO (5,0): 12345

Mais detalhes no site da ORACLE:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

Ayman
fonte
E Escala é o número de dígitos à direita (positivo) ou à esquerda (negativo) do ponto decimal, não logo após o ponto decimal.
Lalit Kumar B
Veja o exemplo do koljaTM. Precisão é quantos dígitos significativos, que podem ter um valor (ou seja, não apenas "0" como espaços reservados). Escala indica como aqueles caem em relação ao ponto decimal. A escala pode ser negativa, indicando com que precisão ACIMA de 0 você não se importa. NÚMERO (1, -4): permite apenas 10 valores: 00000, 10000, 20000 ... 90000
gordon
1
A precisão NÃO é APENAS o número total de dígitos. Como David Aldridge explicou em seu comentário aos manojlds, é a mantissa - quantos dígitos significativos você gosta. A escala considerada como expoente é uma explicação mais precisa, embora esotérica. Qualquer escala negativa não terá dígitos após o ponto decimal e terá tantos 0s como posicionadores à esquerda do ponto decimal. NÚMERO (1, -4) terá 5 dígitos, mas apenas o primeiro, na casa dos 10.000, terá um valor de seu interesse.
gordon
34

Talvez mais claro:

Observe que precisão é o número total de dígitos, incluindo a escala

NÚMERO (precisão, escala)

Precisão 8, escala 3: 87654.321

Precisão 5, escala 3: 54.321

Precisão 5, escala 1: 5432.1

Precisão 5, escala 0: 54321

Precisão 5, escala -1: 54320

Precisão 5, escala -3: 54000

Eric Bole-Feysot
fonte
19

Escala é o número de dígitos após o ponto decimal (ou dois pontos, dependendo da localidade)

Precisão é o número total de dígitos significativos

escala VS precisão

ylerjen
fonte
1

precisão: É o número total de dígitos antes ou depois do ponto de raiz. EX: 123.456 aqui a precisão é 6.

Escala: É o número total de dígitos após o ponto de raiz. EX: 123.456 aqui Scaleis 3

Bablu Gope
fonte
-5

Se o valor for 9999,988 e Precisão 4, escala 2, significa 9999 (representa precisão) .99 (a escala é 2, portanto, 0,988 é arredondado para 0,99)

Se o valor for 9999,9887 e a precisão for 4, a escala for 2, significa 9999,99

iogue
fonte
7
Não, precisão é o número de dígitos significativos para armazenar. Em ambos os casos a precisão armazenado é 6 ea escala é 2.
David Aldridge