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)
- 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:
Si la colonne mylink.myvariant contient la chaîne "A", la fonction suivante renvoie la valeur 0:IsVarNum(2) IsVarNum(mylink.myvariant)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îne11.123456 « »
et le nombre 3, alors la fonction suivante renvoie la valeur 0 :
Si mylink.mylist contient la chaîneVarCmp('11.123456', '11.123456', 3) VarCmp(mylink.mylist)11.123456890 « »
, la chaîne11.123456 « »
et le nombre 3, alors la fonction suivante renvoie la valeur 1 :VarCmp('11.123456890', '11.123456', 3) VarCmp(mylink.mylist)