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.

Read syntax diagramSkip visual syntax diagramCOMPARE_DECFLOAT(expression1 ,expression2)

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.
O valor do resultado é o seguinte:
  • 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