COMPARE_DECFLOAT Função escalar
A função COMPARE_DECFLOAT retorna um valor SMALLINT que indica se os dois argumentos são iguais ou não ordenados, ou se um argumento é maior que o outro.
O esquema é SYSIBM.
- expression1
- Uma expressão que retorna um valor de qualquer tipo de dado numérico embutido. Se o argumento não for o DECFLOAT (34), ele é logicamente convertido para o DECFLOAT (34) para processamento. expression2
- Uma expressão que retorna um valor de qualquer tipo de dado numérico embutido. Se o argumento não for o DECFLOAT (34), ele é logicamente convertido para o DECFLOAT (34) para processamento.
O valor de expression1 é comparado com o valor de expression2, e o resultado é retornado de acordo com as seguintes regras:
- Se ambos os argumentos forem finitos, a comparação é algébrica e segue o procedimento para subtração de ponto de floatinga decimal. Se a diferença for exatamente zero com qualquer sinal, os argumentos são iguais. Se uma diferença nula é positiva, o primeiro argumento é maior do que o segundo argumento. Se uma diferença não nula é negativa, o primeiro argumento é menor que o segundo.
- Positivo zero e negativo zero comparar como igual.
- O infinito positivo se compara igual ao infinito positivo.
- O infinito positivo se compara maior do que qualquer número finito.
- O infinito negativo se compara igual ao infinito negativo.
- O infinito negativo se compara menos do que qualquer número finito.
- A comparação numérica é exata. O resultado é determinado para operandos finitos como se alcance e precisão fossem ilimitados. Nenhuma condição de estouro ou subfluxo pode ocorrer.
- Se um dos argumentos for NaN ou sNaN (positivo ou negativo), o resultado não será ordenado.
- 0 se os argumentos forem exatamente iguais
- 1 se expression1 for menor do que expression2
- 2 se expression1 for maior que expression2
- 3 se os argumentos estiverem desordenados
O resultado da função é um valor SMALLINT. Se qualquer um argumento pode ser nulo, o resultado pode ser nulo; se qualquer um argumento for nulo, o resultado será o valor nulo.
Exemplos
Os exemplos a seguir mostram os valores que são retornados pela função COMPARE_DECFLOAT, dada uma variedade de valores de ponto flutuante decimal de entrada:
COMPARE_DECFLOAT(DECFLOAT(2.17), DECFLOAT(2.17)) = 0
COMPARE_DECFLOAT(DECFLOAT(2.17), DECFLOAT(2.170)) = 2
COMPARE_DECFLOAT(DECFLOAT(2.170), DECFLOAT(2.17)) = 1
COMPARE_DECFLOAT(DECFLOAT(2.17), DECFLOAT(0.0)) = 2
COMPARE_DECFLOAT(INFINITY,INFINITY) = 0
COMPARE_DECFLOAT(INFINITY,-INFINITY) = 2
COMPARE_DECFLOAT(DECFLOAT(-2),INFINITY) = 1
COMPARE_DECFLOAT(NAN,NAN) = 3
COMPARE_DECFLOAT(DECFLOAT(-0.1),SNAN) = 3