Números

Los tipos de datos numéricos son entero, decimal, coma flotante y coma flotante decimal.

Los tipos de datos numéricos se clasifican de la siguiente manera:
  • Numéricos exactos: enteros y decimales
  • Coma flotante decimal
  • Numéricos aproximados: coma flotante

Entre los enteros se incluyen los enteros pequeños, los grandes enteros y entero superior. Los números enteros son representaciones exactas de los enteros. Los números decimales son representaciones exactas de números con una precisión y una escala fijas. Los números decimales y enteros se consideran tipos numéricos exactos.

Los números de coma flotante pueden tener una precisión de 16 ó 34. La coma flotante decimal soporta las representaciones exactas de números reales y la aproximación de los números reales y, por lo tanto, no se considera un tipo numérico exacto ni un tipo numérico aproximado.

La coma flotante incluye la precisión simple y la precisión doble. Los números de coma flotante son aproximaciones de números reales y se consideran tipos numéricos aproximados.

Todos los números tienen un signo, una precisión y una escala. Para todos los números excepto la coma flotante decimal, si el valor de columna es cero, el signo será positivo. Los números de coma flotante decimal incluyen ceros positivos y negativos. La coma flotante decimal tiene valores diferenciados para un número y el mismo número con varios exponentes (por ejemplo: 0,0, 0,00, 0,0E5, 1,0, 1,00, 1,0000). La precisión es el número total de dígitos decimales, excluyendo el signo. La escala es el número total de dígitos decimales a la derecha de la coma decimal. Si no hay una coma decimal, la escala es cero.

Consulte también la sección de tipo de datos en la descripción de la sentencia CREATE TABLE.

.

Entero pequeño (SMALLINT)

Un entero pequeño es un entero de dos bytes con una precisión de 5 dígitos. El rango de pequeños enteros va de -32 768 a 32 767.

Entero grande (INTEGER)

Un entero grande es un entero de cuatro bytes con una precisión de 10 dígitos. El rango de enteros grandes va de -2 147 483 648 a +2 147 483 647.

Entero superior (BIGINT)

Un entero superior es un entero de ocho bytes con una precisión de 19 dígitos. El rango de enteros grandes va de -9 223 372 036 854 775 808 a +9 223 372 036 854 775 807.

Decimal (DECIMAL o NUMERIC)

Un valor decimal es un número decimal empaquetado con una coma decimal implícita. La posición de la coma decimal la determinan la precisión y la escala del número. La escala, que es el número de dígitos en la parte de la fracción del número, no puede ser negativa ni mayor que la precisión. La precisión máxima es de 31 dígitos.

Todos los valores de una columna decimal tienen la misma precisión y escala. El rango de una variable decimal o de los números de una columna decimal es de -n a +n, donde el valor absoluto de n es el número mayor que puede representarse con la precisión y escalas aplicables. El rango máximo va de -1031+1 a 1031-1.

Coma flotante de precisión simple (REAL)

Un número de coma flotante de precisión simple es una aproximación de 32 bits de un número real. El número puede ser cero o puede estar en el rango de -3,4028234663852886e+38 a -1.1754943508222875e-38, o de 1,1754943508222875e-38 a 3,4028234663852886e+38.

Coma flotante de doble precisión (DOUBLE o FLOAT)

Un número de coma flotante de doble precisión es una aproximación de 64 bits de un número real. El número puede ser cero o puede estar en el rango de -1,7976931348623158e+308 a -2,2250738585072014e-308, o de 2,2250738585072014e-308 a 1,7976931348623158e+308.

Coma flotante decimal (DECFLOAT)

Un valor de coma flotante decimal es un número IEEE 754r con una coma decimal. La posición de la coma decimal se almacena en cada uno de los valores de coma flotante decimal. La precisión máxima es de 34 dígitos. El rango de un número de coma flotante decimal es de 16 ó 34 dígitos de precisión y un rango de exponentes de 10-383 a 10+384 ó de 10-6143 a 10+6144, respectivamente. El exponente mínimo, Emin, para valores de DECFLOAT es -383 para DECFLOAT(16) y -6143 para DECFLOAT(34). El exponente máximo, Emax, para valores DECFLOAT es 384 para DECFLOAT(16) y 6144 para DECFLOAT(34).

Además de los números finitos, los números de coma flotante decimal pueden representar uno de los siguientes valores especiales de coma flotante decimal con nombre:
  • Infinity - Un valor que representa un número cuya magnitud es infinitamente grande
  • Quiet NaN - Es un valor que representa resultados indefinidos y que no causa un aviso de número no válido
  • Signalling NaN - Es un valor que representa resultados indefinidos y que causa un aviso de número no válido si se utiliza en cualquier operación numérica
Cuando un número tiene uno de estos valores especiales, su coeficiente y exponente no están definidos. El signo de un valor de infinito es significativo, ya que es posible tener un infinito positivo o negativo. El signo de un valor NaN no tiene significado en las operaciones aritméticas.

Números anormales y subdesbordamiento

Los números distintos de cero cuyos exponentes ajustados son menores que Emin se denominan números anormales. Estos números anormales se aceptan como operandos para todas las operaciones y pueden ser el resultado de cualquier operación.

Para un resultado anormal, los valores mínimos del exponente se convierten en min - (precisión-1), denominado Etiny, donde la precisión es la precisión de trabajo. Si es necesario, el resultado se redondea para asegurarse de que el exponente no sea inferior a Etiny. Si el resultado se convierte en inexacto durante el redondeo, se devuelve un subflujo aviso. Un resultado subnormal no siempre devuelve el avisode subdesbordamiento.

Cuando un número se subdesborda a cero durante un cálculo, su exponente será Etiny. El valor máximo del exponente no resulta afectado.

El valor máximo del exponente para números anormales es el mismo que el valor mínimo del exponente que puede surgir durante las operaciones que no den como resultado números anormales. Esto se produce cuando la longitud del coeficiente en dígitos decimales es igual a la precisión.