Tipo de datos ESQL DECIMAL

El tipo de datos DECIMAL contiene una representación exacta de un número decimal. Los decimales tienen precisión, escala y redondeo. La precisión es el número total de dígitos de un número:
  • La precisión mínima es 1
  • La precisión máxima es 34
La escala es el número de dígitos a la derecha del punto decimal:
  • La escala mínima (-exponent) es -999,999,999
  • La escala máxima (-exponent) es +999,999,999

No puede definir una precisión y una escala cuando declara un DECIMAL, por se asignan automáticamente. Sólo es posible especificar la precisión y la escala cuando se realiza una transformación CAST en un DECIMAL.

Escala, precisión y redondeo

Se aplican las siguientes normas para escala, precisión y redondeo:
  • A menos que sea necesario mantener el redondeo en la máxima precisión, la escala del resultado de una suma o resta es mayor que las escalas de los dos operandos.
  • A menos que sea necesario mantener el redondeo en la máxima precisión, la escala del resultado de una multiplicación es la suma de las escalas de los dos operandos.
  • La precisión del resultado de una división es el número de dígitos más pequeño necesario para representar el resultado con exactitud y con la máxima precisión.
  • Todos los cálculos de suma, resta, multiplicación y división se redondean en los dígitos menos significativos, según sea necesario, para mantener la máxima precisión.
  • Todo el redondeo automático es redondeo simétrico. Las normas son:
    • Si el primer dígito a eliminar es 4 o menos, el primer dígito retenido no se modifica
    • Si el primer dígito a eliminar es 6 o más, el primer dígito retenido se incrementa
    • Si el primer dígito a eliminar es 5, el primer dígito retenido se incrementa si es impar y no se modifica si es par. Por lo tanto, tanto 1.5 como 2.5 se redondean en 2 mientras que 3.5 y 4.5 se redondean en 4.
    • Los números negativos se redondean según la misma norma

Literales decimales

Literales decimales que constan únicamente de una serie de dígitos sin comillas, es decir, que no contienen ni una coma decimal ni un exponente (por ejemplo, 12345), son de tipo INTEGER si son lo suficientemente pequeños para que puedan representarse como enteros. De lo contrario, son de tipo DECIMAL.

Los literales decimales que constan de una serie de dígitos sin comillas, opcionalmente una coma decimal y un exponente (por ejemplo, 123e1), son de tipo FLOAT si son lo suficientemente pequeños como para poder representarlos como flotantes. De lo contrario, son de tipo DECIMAL.

Los literales decimales que constan de la palabra clave DECIMAL y una serie de dígitos entre comillas, con o sin una coma decimal y con o sin un exponente, son de tipo DECIMAL, por ejemplo, DECIMAL '42', DECIMAL '1.2346789e+203'.

Las series de este tipo de literales también pueden tener valores:
  • 'NAN', no es un número
  • 'INF', 'INFINITY'
  • '+INF', '+INFINITY'
  • '-INF', '-INFINITY'
  • 'MAX'
  • 'MIN'
(en cualquier combinación de mayúsculas/minúsculas) para indicar los valores correspondientes.
Inicio del cambioTanga en cuenta que si no especifica suficientes dígitos de precisión, ese INF se devolverá, como se muestra en el ejemplo siguiente:
 SET VAL [equals char] CAST('123456' AS DECIMAL(3,0))
Fin del cambio
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ak17820_