Fonctions numériques (DataStage®)

Utilisez les fonctions de manipulation des nombres pour extraire la mantisse d'un nombre décimal ou en virgule flottante. La catégorie Numéro de l'éditeur d'expression contient également les fonctions de transtypage, que vous pouvez utiliser pour lancer des nombres sous forme de types de données double, flottant ou entier.

Les crochets indiquent qu'un argument est facultatif. Les exemples illustrent la fonction telle qu'elle apparaît dans une zone Dérivation de l'étape Transformer.

Les fonctions de transtypage de type vous aident lorsque vous effectuez des calculs mathématiques à l'aide de zones numériques. Par exemple, si vous avez un calcul utilisant une colonne de sortie de type flottant dérivé d'une colonne d'entrée de type entier dans une étape Parallel Transformer, le résultat est dérivé sous la forme d'un entier quel que soit son type flottant. Si vous souhaitez un résultat non intégral pour un calcul utilisant des opérandes intégraux, vous pouvez utiliser les fonctions de transtypage de type pour transtyper les opérandes de type entier en opérandes non intégrales.

AsDouble
Traite le nombre indiqué comme un double.
  • Entrée : number
  • Sortie : number (double)
  • Exemples. Dans l'expression suivante, la colonne d'entrée mynumber contient un entier, mais la fonction génère un double. Si mylink.mynumber contient la valeur 56, les deux fonctions suivantes sont équivalentes et renvoient la valeur 1.29629629629629619E+01 :
    AsDouble(56/4.32)
    AsDouble(mylink.mynumber/4.32)
    
AsInteger
Traite le nombre indiqué comme un entier. Il y a cependant une différence de comportement entre le cas où l'entrée est un nombre décimal (à convertir en entier) et celui où l'entrée est un float ou un double (à convertir en entier). Si la conversion est d'un float ou un double en entier, il s'agit d'une simple affectation à un entier. En cas de décimal AsInteger(), la fonction est appelée et arrondit la sortie à la valeur la plus proche.
  • Entrée : number
  • Sortie : number (integer)
  • Exemples. Dans l'expression suivante, la valeur d'entrée 12.962963 est du type Double. Bien que la valeur soit traitée comme type Double, la fonction génère un entier. S'agissant d'une simple affectation à un entier, la fonction retourne la valeur 12 :
    AsInteger(12.962963)
    
Dans l'expression suivante, les calculs tels que ( 56/4.32 ) sont traités comme un type Decimal et l'appel de AsInteger( fonction ) arrondit à la valeur la plus proche et renvoie la valeur 13 :
AsInteger(56/4.32)
AsFloat
Traite le nombre indiqué comme une variable flottante.
  • Entrée : number
  • Sortie : number (float)
  • Exemples. Dans l'expression suivante, la colonne d'entrée mynumber contient un entier, mais la fonction génère une variable flottante. Si mylink.mynumber contient la valeur 56, les deux fonctions suivantes sont équivalentes et renvoient la valeur 1.29629629629629619E+01 :
    AsFloat(56/4.32)
    AsFloat(mylink.mynumber/4.32)
    
Correctif

Convertir une valeur numérique en nombre à virgule flottante avec une précision spécifiée (nombre [,précision [,mode]])

  • Entrée: nombre (décimal), nombre (int32), nombre (int32)
  • Sortie : result (decimal)
  • Exemples. Si la colonne mylink.mylist contient le nombre 2.01234, le nombre 2 et le nombre 1, la fonction suivante renvoie la valeur 2.01:
    Fix("2.01234", 2, 1)
    Fix(mylink.mylist)
IsStrNum

Vérifie si une chaîne est un nombre valide. Cette fonction est présente à des fins de compatibilité, mais son utilisation n'est pas recommandée.

  • Entrée : string (string)
  • Sortie : result (int32)
  • Exemples. Si la colonne mylink.mystring contient la chaîne "1", la fonction suivante renvoie la valeur 1:
    isStrNum(mylink.mystring)
IsVarNum

Vérifie si la variante est un nombre valide. Cette fonction est présente à des fins de compatibilité, mais son utilisation n'est pas recommandée.

  • Entrée: variante (chaîne)
  • Sortie : result (int32)
  • Exemples. Si la colonne mylink.myvariant contient la chaîne "2", la fonction suivante renvoie la valeur 1:
    IsVarNum(2)
    IsVarNum(mylink.myvariant)
    
    Si la colonne mylink.myvariant contient la chaîne "A", la fonction suivante renvoie la valeur 0:
    IsVarNum(A)
    IsVarNum(mylink.myvariant)
    
MantissaFromDecimal
Renvoie la mantisse de la décimale spécifiée.
  • Entrée : number (decimal)
  • Sortie : result (dfloat)
  • Exemples. Si mylink.number contient le nombre 243.7675, les deux fonctions suivantes sont équivalentes et retourneront la valeur 7675 :
    MantissaFromDecimal(243.7675)
    MantissaFromDecimal(mylink.mynumber)
    
MantissaFromDFloat
Renvoie la mantisse de la valeur dfloat spécifiée.
  • Entrée : number (dfloat)
  • Sortie : result (dfloat)
  • Exemples. Si mylink.number contient le nombre 1.234412000000000010E + 4, la fonction suivante renvoie la valeur 1 :
    MantissaFromDFloat(mylink.mynumber)
    
VarCmp

Compare deux variantes. Cette fonction est présente à des fins de compatibilité, mais son utilisation n'est pas recommandée.

  • Entrée: variante (chaîne), variante (chaîne), nombre (int32)
  • Sortie : result (int32)
  • Exemples. Si mylink.mylist contient la chaîne 11.123456 « », la chaîne 11.123456 « » et le nombre 3, alors la fonction suivante renvoie la valeur 0 :
    VarCmp('11.123456', '11.123456', 3)
    VarCmp(mylink.mylist)
    Si mylink.mylist contient la chaîne 11.123456890 « », la chaîne 11.123456 « » et le nombre 3, alors la fonction suivante renvoie la valeur 1 :
    VarCmp('11.123456890', '11.123456', 3)
    VarCmp(mylink.mylist)