Tipo de Dados ESQL DECIMAL

O tipo de dados DECIMAL inclui uma representação exata de um número decimal.Os decimais possuem precisão, escala e arredondamento. Precisão é o número total de dígitos de um número.
  • A precisão mínima é 1
  • A precisão máxima é 34
Escala é o número de dígitos à direita do ponto decimal.:
  • A escala mínima (-exponent) é -999.999.999
  • A escala máxima (-exponent) é +999.999.999

Não é possível definir precisão e escala ao declarar um DECIMAL, porque elas são designadas automaticamente. É possível apenas especificar precisão e escala ao lançar em um DECIMAL.

Escala, Precisão e Arredondamento

As seguintes regras de escala, precisão e arredondamento se aplicam:
  • A menos que o arredondamento seja requerido para manter dentro da precisão máxima, a escala do resultado de uma adição ou subtração é maior que as escalas dos dois operandos.
  • A menos que o arredondamento seja requerido para manter dentro da precisão máxima, a escala do resultado de uma multiplicação é a soma das escalas dos dois operandos.
  • A precisão do resultado de uma divisão é a menor do número de dígitos necessários para representar o resultado exatamente e a precisão máxima.
  • Todos os cálculos de adição, subtração, multiplicação e divisão são arredondados para os dígitos menos significativos, conforme necessário, para permanecer dentro da precisão máxima.
  • Todo arredondamento automático é do banker ou parcialmente simétrico. As regras disso são:
    • Quando o primeiro dígito eliminado for 4 ou menos, o primeiro dígito mantido ficará inalterado.
    • Quando o primeiro dígito eliminado for 6 ou mais, o primeiro dígito mantido será incrementado.
    • Quando o primeiro dígito eliminado for 5, o primeiro dígito mantido será incrementado se for ímpar e inalterado se for par. Portanto, 1,5 e 2,5 são arredondados para 2, enquanto 3,5 e 4,5 são arredondados para 4
    • Números negativos são arredondados de acordo com a mesma regra

Literais Decimais

Os literais decimais que consistirem apenas em uma cadeia de dígitos sem aspas, ou seja, não contiverem uma vírgula decimal nem um expoente (por exemplo, 12345) serão do tipo INTEGER se forem pequenos o suficiente para serem representados como inteiros. Caso contrário, serão do tipo DECIMAL.

Os literais decimais que consistirem em uma cadeia de dígitos sem aspas, opcionalmente uma vírgula decimal e um expoente (por exemplo, 123e1) serão do tipo FLOAT se forem pequenos o suficiente para serem representados como flutuantes. Caso contrário, serão do tipo DECIMAL.

Os literais decimais que consistirem na palavra-chave DECIMAL e em uma cadeia de dígitos com aspas, com ou sem uma vírgula decimal e com ou sem um expoente serão do tipo DECIMAL, por exemplo, DECIMAL '42', DECIMAL '1.2346789e+203'.

As cadeias nesse tipo de literal também podem ter os valores:
  • 'NAN', não um número
  • 'INF', 'INFINITY'
  • '+INF', '+INFINITY'
  • '-INF', '-INFINITY'
  • 'MAX'
  • 'MIN'
(em qualquer mistura de maiúsculas e minúsculas) para denotar os valores correspondentes.
Início da mudançaObserve que, se você não especificar dígitos de precisão suficientes, esse INF será retornado, conforme mostrado no exemplo a seguir:
 SET VAL [equals char] CAST('123456' AS DECIMAL(3,0))
Fim da mudança
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak17820_