4D v16.3

Num

Accueil

 
4D v16.3
Num

Num 


 

Num ( expression {; séparateur} ) -> Résultat 
Paramètre Type   Description
expression  Chaîne, Booléen, Entier long in Chaîne à convertir en numérique ou Booléen à convertir en 0 ou 1 ou Expression numérique
séparateur  Chaîne in Séparateur décimal
Résultat  Réel in Valeur numérique du paramètre expression

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.

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.

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

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))

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



Voir aussi  

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

 
PROPRIÉTÉS 

Produit : 4D
Thème : Chaînes de caractères
Numéro : 11
Nom intl. : Num

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
HISTORIQUE 

Modifié : 4D v11 SQL

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)