Función escalar QUANTIZE

La función QUANTIZE devuelve un valor de coma flotante decimal que equivale en valor (excepto para el redondeo) y signo con expresión-numérica y que tiene un exponente igual al exponente de expresión-exp.

El número de dígitos (16 ó 34) es igual al número de dígitos de expresión-numérica.
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualQUANTIZE(expresión-numérica ,expresión-exp)

El esquema es SYSIBM.

expresión-numérica
Expresión que devuelve un valor de cualquier tipo de datos numérico incorporado. Si el argumento no es un valor de coma flotante decimal, se convertirá a DECFLOAT(34) para su proceso.
expresión-exp
Expresión que devuelve un valor de cualquier tipo de datos numérico incorporado. Si el argumento no es un valor de coma flotante decimal, se convertirá a DECFLOAT(34) para su proceso. La expresión-exp se usa como patrón de ejemplo para volver a dar escala a expresión-numérica. Se ignora el signo y el coeficiente de expresión-exp.

El coeficiente del resultado deriva del de expresión-numérica. Se redondeo, si es necesario (si el exponente se está aumentando), multiplicado por una potencia de diez (si el exponente se está disminuyendo), o permanece inalterado (si el exponente es ya igual al de expresión-exp).

El registro especial CURRENT DECFLOAT ROUNDING MODE determina la modalidad de redondeo.

Al contrario que otras operaciones aritméticas del tipo de datos de coma flotante decimal, en el caso de que la longitud del coeficiente posterior a la operación de quantize sea superior a la precisión especificada por expresión-exp, el resultado será NaN y se devolverá un aviso (SQLSTATE 0168D). Esta acción asegurará que, a menos que haya una condición de aviso, el exponente del resultado de QUANTIZE siempre será igual al de expresión-exp.

  • Si cualquiera de los argumentos es NaN, se devolverá NaN
  • Si cualquiera de los argumentos es sNaN, se devolverá NaN y se devolverá un aviso (SQLSTATE 01565)
  • Si ambos argumentos son infinito (positivo o negativo), se devolverá infinito con el mismo signo que el primer argumento
  • Si un argumento es infinito (positivo o negativo) y el otro argumento no es infinito se devolverá NaN y se devolverá un aviso (SQLSTATE 0168D)

El resultado de la función es un valor de DECFLOAT(16) si ambos argumentos son DECFLOAT(16). En caso contrario, el resultado de la función es un valor DECFLOAT(34). El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo.

Ejemplos

  • Ejemplo 1: los ejemplos siguientes muestran los valores devueltos por la función QUANTIZE, si se dan varios valores coma flotante decimal de entrada y se supone una modalidad de redondeo de ROUND_HALF_UP:
    QUANTIZE(2.17, DECFLOAT(0.001)) = 2.170 
    QUANTIZE(2.17, DECFLOAT(0.01)) = 2.17 
    QUANTIZE(2.17, DECFLOAT(0.1)) = 2.2 
    QUANTIZE(2.17, DECFLOAT('1E+0')) = 2 
    QUANTIZE(2.17, DECFLOAT('1E+1')) = 0E+1 
    QUANTIZE(2, DECFLOAT(INFINITY)) = NaN    -- aviso 
    QUANTIZE(0, DECFLOAT('1E+5')) = 0E+5 
    QUANTIZE(217, DECFLOAT('1E-1')) = 217.0 
    QUANTIZE(217, DECFLOAT('1E+0')) = 217 
    QUANTIZE(217, DECFLOAT('1E+1')) = 2.2E+2 
    QUANTIZE(217, DECFLOAT('1E+2')) = 2E+2
  • Ejemplo 2: en el ejemplo siguiente, se devuelve el valor -0 para la función QUANTIZE. Se utiliza la función CHAR para evitar la potencial eliminación del signo menos por parte de un programa cliente:
    CHAR(QUANTIZE(-0.1, DECFLOAT(1))) = -0