Números anormales y subdesbordamiento

El tipo de datos de coma flotante decimal tiene un conjunto de números distintos de cero que se encuentran fuera del rango de valores de coma flotante decimal normal. Estos números se llaman subnormales.

Los números distintos de cero cuyos exponentes ajustados son inferiores a Emin (-6143 para DECFLOAT (34) o -383 para DECFLOAT (16)), 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. Si un resultado es subnormal antes de cualquier redondeo, se devuelve el aviso subnormal.1

Para un resultado subnormal, el valor mínimo del exponente se convierte en Emin-(precisión-1), denominado Etiny, donde la precisión es la precisión del número de coma flotante decimal. Por lo tanto, el valor más pequeño del exponente Etiny = -6176 para DECFLOAT (34) y -398 para DECFLOAT (16). A medida que el exponente Ediminuto se reduce, el número de dígitos disponibles en la mantisa también disminuye. El número de dígitos disponibles en la mantisa para los números subnormales es (precisión-(-Etiny + Emin).

El resultado se redondeará, si es necesario, para asegurarse de que el exponente no es menor que Etiny. Si, durante este redondeo, el resultado se vuelve inexacto, se devuelve un aviso de subdesbordamiento.1 Un resultado subnormal no siempre devuelve el aviso de subdesbordamiento, pero siempre devolverá el aviso subnormal.

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 subnormales es el mismo que el valor mínimo del exponente que puede surgir durante las operaciones que no dan como resultado números subnormales. Esto ocurre cuando la longitud del coeficiente en dígitos decimales es igual a la precisión.

1 El aviso sólo se devuelve si se especifica *YES para la opción de consulta SQL_DECFLOAT_WARNING.