Funções numéricas ( DataStage® )

Use as funções numéricas para extrair a mantissa de um decimal ou de um número de vírgula flutuante. A categoria Número no editor de expressão também contém as funções de casting do tipo, que pode-se usar para executar cast de números como tipos de dados duplo, flutuante ou número inteiro.

Os colchetes indicam que um argumento é opcional. Os exemplos mostram a função como ela aparece em um campo Derivação no estágio Transformer.

As funções de cast de tipo ajudam você ao executar cálculos matemáticos usando campos numéricos. Por exemplo, se você tiver um cálculo usando uma coluna de saída do tipo valor flutuante derivado de uma coluna de entrada do tipo número inteiro em um estágio Parallel Transformer, o resultado será derivado como um número inteiro independentemente de seu tipo de valor flutuante. Se você deseja um resultado não integral para um cálculo usando operandos integrais, será possível usar as funções de cast de tipo para converter os operandos de número inteiro em operandos não integrais.

AsDouble
Trate o número fornecido como dobro.
  • Entrada: number
  • Saída: número (duplo)
  • Exemplos. Na expressão a seguir, a coluna de entrada mynumber contém um número inteiro, mas a função resulta em dobro. Se mylink.mynumber contiver o valor 56, as duas funções a seguir serão equivalentes e retornarão o valor 1.29629629629629619E+01:
    AsDouble(56/4.32)
    AsDouble(mylink.mynumber/4.32)
    
AsInteger
Trate o número fornecido como um número inteiro. Porém, há uma diferença de comportamento quando um decimal é designado a um número inteiro em comparação com um valor flutuante ou um duplo designado a um número inteiro. Se a conversão for feita do valor flutuante ou duplo para um número inteiro, ela será uma designação simples para um número inteiro. No caso do decimal AsInteger(), a função é chamada e arredonda a saída para o valor mais próximo.
  • Entrada: number
  • Saída: número (número inteiro)
  • Exemplos. Na expressão a seguir, o valor de entrada 12.962963 tem um tipo Double. Apesar de o valor ser tratado como tipo Duplo, a função exibe um número inteiro. Por isso ela é uma designação simples para um número inteiro e a função retorna o valor 12:
    AsInteger(12.962963)
    
Na expressão a seguir, os cálculos como ( 56/4.32 ) são tratados como um tipo Decimal e a chamada AsInteger( da função ) arredonda para o valor mais próximo e retorna o valor 13:
AsInteger(56/4.32)
AsFloat
Trate o número fornecido como um valor flutuante.
  • Entrada: number
  • Saída: número (valor flutuante)
  • Exemplos. Na expressão a seguir, a coluna de entrada mynumber contém um número inteiro, mas a função resulta em um valor flutuante. Se mylink.mynumber contiver o valor 56, as duas funções a seguir serão equivalentes e retornarão o valor 1.29629629629629619E+01:
    AsFloat(56/4.32)
    AsFloat(mylink.mynumber/4.32)
    
Correção

Converter um valor numérico em um número de vírgula flutuante com uma precisão especificada (number [,precision [,mode]])

  • Entrada : número (decimal), número ( int32 ), número ( int32 )
  • Saída: result (decimal)
  • Exemplos. Se a coluna mylink.mylist contiver o número 2.01234, o número 2 e o número 1, a seguinte função retornará o valor 2.01:
    Fix("2.01234", 2, 1)
    Fix(mylink.mylist)
IsStrNum

Verifica se uma string é um número válido. Esta função está presente por motivos de compatibilidade, mas seu uso não é recomendado.

  • Entrada: string (string)
  • Saída: result (int32)
  • Exemplos. Se a coluna mylink.mystring contiver a string “1”, a função a seguir retornará o valor 1:
    isStrNum(mylink.mystring)
IsVarNum

Verifica se a variante é um número válido. Esta função está presente por motivos de compatibilidade, mas seu uso não é recomendado.

  • Entrada : variante (string)
  • Saída: result (int32)
  • Exemplos. Se a coluna mylink.myvariant contiver a string “2”, a seguinte função retornará o valor 1:
    IsVarNum(2)
    IsVarNum(mylink.myvariant)
    
    Se a coluna mylink.myvariant contiver a string “A”, a função a seguir retornará o valor 0:
    IsVarNum(A)
    IsVarNum(mylink.myvariant)
    
MantissaFromDecimal
Retorna a mantissa do decimal fornecido.
  • Entrada: number (decimal)
  • Saída: result (dfloat)
  • Exemplos. Se mylink.number contiver o número 243.7675, as duas funções a seguir serão equivalentes e retornarão o valor 7675:
    MantissaFromDecimal(243.7675)
    MantissaFromDecimal(mylink.mynumber)
    
MantissaFromDFloat
Retorna a mantissa do dfloat fornecido.
  • Entrada: number (dfloat)
  • Saída: result (dfloat)
  • Exemplos. Se mylink.number contiver o número 1.234412000000000010E +4, a função a seguir retornará o valor 1:
    MantissaFromDFloat(mylink.mynumber)
    
VarCmp

Compara duas variantes. Esta função está presente por motivos de compatibilidade, mas seu uso não é recomendado.

  • Entrada : variante (string), variante (string), número ( int32 )
  • Saída: result (int32)
  • Exemplos. Se mylink.mylist contiver a string 11.123456 '', a string 11.123456 '' e o número 3, a seguinte função retornará o valor 0:
    VarCmp('11.123456', '11.123456', 3)
    VarCmp(mylink.mylist)
    Se mylink.mylist contiver a string 11.123456890 '', a string 11.123456 '' e o número 3, a seguinte função retornará o valor 1:
    VarCmp('11.123456890', '11.123456', 3)
    VarCmp(mylink.mylist)