Num

4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 11 (Modifiée)


Num (expression{; séparateur}) Numérique

ParamètreTypeDescription
expressionChaîne | Booléen | NumChaîne à convertir en numérique ou
Booléen à convertir en 0 ou 1 ou
Expression numérique
séparateurChaîneSéparateur décimal
RésultatNumériqueValeur numérique du paramètre expression

Description

La fonction Num retourne sous forme de numérique l'expression de type chaîne, Booléen ou numérique que vous avez passée dans le paramètre expression. Le paramètre facultatif séparateur permet de désigner un séparateur décimal pour l'évaluation des expressions de type chaîne.

Expressions de type chaîne

Si expression ne contient que des caractères alphabétiques, Num retourne zéro. Si expression contient des caractères alphabétiques et des caractères numériques, Num ignore les caractères alphabétiques. Ainsi, Num transformera la chaîne "a1b2c3" en nombre 123.

Note : Seuls les 32 premiers caractères de expression sont pris en compte.

Il existe trois caractères réservés que Num traite de manière particulière. Il s'agit du séparateur décimal tel que défini dans le système (si le paramètre séparateur n'est pas passé), du tiret (-) et du e (ou E). Ils seront interprétés en tant que caractères de formatage des nombres :

Le séparateur décimal est interprété en tant que tel et doit être inclus dans la chaîne de caractères numériques. Par défaut, la commande utilise le séparateur décimal défini dans le système d'exploitation. Vous pouvez modifier ce caractère à l'aide du paramètre séparateur (cf. ci-dessous).

Le tiret définit un nombre ou un exposant négatif (signe moins). Le tiret doit être placé devant tout caractère numérique négatif ou derrière le e pour un exposant. Hormis le cas du caractère e, si le tiret est inclus dans une chaîne numérique, la partie de la chaîne se trouvant derrière le tiret est ignorée. Par exemple, Num("123-456") retourne 123, mais Num("-9") retourne -9.

Le e ou E désigne tout caractère numérique se trouvant à sa droite comme étant la puissance d'un exposant. Le e doit être inclus dans une chaîne numérique. Ainsi, Num ("123e-2") retourne 1,23.

A noter que dans le cas où la chaîne comporte plus d'un caractère e, la conversion pourra donner des résultats différents sous Mac OS et sous Windows.

Le paramètre séparateur permet de désigner un séparateur décimal personnalisé pour l'évaluation de expression. Lorsque la chaîne à évaluer est exprimée avec un séparateur décimal différent du séparateur système, la commande retourne un résultat incorrect. Le paramètre séparateur permet dans ce cas d'obtenir une évaluation correcte. Lorsque ce paramètre est passé, la commande ne tient pas compte du séparateur décimal système. Vous pouvez passer un ou plusieurs caractères.

Note : La commande LIRE FORMATAGE SYSTEME permet de connaître le séparateur décimal courant ainsi que plusieurs autres paramètres système régionaux.

Expressions de type Booléen

Si vous passez une expression booléenne dans le paramètre expression, Num retourne 1 si expression est VRAI, sinon Num retourne 0.

Expressions de type numérique

Si vous passez une expression numérique dans le paramètre expression, Num retourne telle quelle la valeur passée dans le paramètre expression. Ce fonctionnement est utile notamment dans le cadre d'une programmation générique utilisant des pointeurs.

Exemples

(1) L'exemple suivant illustre la manière dont Num fonctionne lorsqu'un argument de type chaîne lui est passé. A chaque ligne, un numérique est assigné à la variable vRésultat. Les commentaires décrivent les résultats :

   vRésultat := Num ("ABCD") ` vRésultat vaut 0 
   vRésultat := Num ("A1B2C3") ` vRésultat vaut 123 
   vRésultat := Num ("123") ` vRésultat vaut 123 
   vRésultat := Num ("123,4") ` vRésultat vaut 123,4
   vRésultat := Num ("-123") ` vRésultat vaut -123 
   vRésultat := Num ("-123e2") ` vRésultat vaut -12300

(2) Dans l'exemple suivant, [Client]Dette est comparé à la valeur 1000. La fonction Num appliquée à cette comparaison retourne 0 ou 1. La multiplication d'une chaîne par 0 ou 1 retourne soit la chaîne, soit une chaîne vide. En définitive, le champ [Client]Risque reçoit la valeur "Acceptable" ou "Inacceptable" :

      ` Si le client a des dettes inférieures à 1000, le risque est acceptable. 
      ` Si le client a des dettes supérieures à 1000, le risque est inacceptable. 
   [Client]Risque:=("Acceptable"* Num([Client]Dettes < 1000))+("Inacceptable" * Num([Client]Dettes >= 1000))

(3) Cet exemple compare les résultats obtenus en fonction du séparateur "courant" :

   $lachaine:="33,333.33"
   $lenum:=Num($lachaine)
      ` par défaut, $lenum vaut 33,33333 sur un système français
   $lenum:=Num($lachaine;".")
      ` $lenum vaut bien 33 333,33 quel que soit le système

Référence

Chaine, LIRE FORMATAGE SYSTEME, Opérateurs logiques, Opérateurs sur les chaînes.


4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant