Fonctions numériques

Les fonctions numériques effectuent des opérations sur des nombres littéraux ou issus de données, et retournent des valeurs numériques (sauf FormatNumber, qui retourne une chaîne). Ces fonctions sont essentielles pour les calculs, les arrondis, le formatage des nombres pour l'affichage et la génération de valeurs aléatoires.

Important : Les fonctions numériques QLingo prennent en charge les nombres comportant un maximum de 14 chiffres. L'utilisation de 15 chiffres ou plus peut produire des résultats incorrects.

Fonction ABS

La fonction ABS retourne la valeur absolue d'un nombre, c'est-à-dire sa distance par rapport à zéro. Le résultat est toujours un nombre positif (ou zéro).

Cette fonction retourne un type de données Nombre.

Syntaxe

ABS(exprAsNumber)

Paramètre

Description

exprAsNumber

Requis. Expression numérique dont la valeur absolue doit être retournée.

Exemples

  1. Obtenir la valeur absolue de nombres positifs et négatifs :

    ABS(5)

    Résultat : 5

    ABS(-5)

    Résultat : 5

  2. Calculer le changement absolu de satisfaction client entre deux enquêtes :

    ABS(|->[survey 2] - |->[survey 1])

    Si survey 1 = 85 et survey 2 = 72 :

    Résultat : 13

  3. Trouver la différence entre deux valeurs, quelle que soit la plus grande :

    ABS(|->[Actual] - |->[Target])

    Si Actual = 150 et Target = 200 :

    Résultat : 50

Fonction Ceil

La fonction Ceil retourne le plus petit entier supérieur ou égal à un nombre. Cette fonction arrondit les valeurs décimales à l'entier supérieur.

Cette fonction retourne un type de données Nombre (entiers uniquement).

Syntaxe

Ceil(exprAsNumber)

Paramètre

Description

exprAsNumber

Requis. Expression numérique à arrondir à l'entier supérieur.

Exemples

  1. Arrondir des nombres décimaux positifs à la valeur supérieure :

    Ceil(3.14159)

    Résultat : 4

    Ceil(3.0)

    Résultat : 3

  2. Arrondir des nombres décimaux négatifs (arrondit vers zéro) :

    Ceil(-3.14159)

    Résultat : -3

    Ceil(-3.9)

    Résultat : -3

  3. Calculer 10 % d'un montant et arrondir à l'entier supérieur :

    Ceil(|->[opening amount] / 100 * 10)

    Si opening amount = 253 :

    Résultat : 26

  4. Calculer le nombre minimum de boîtes nécessaires pour expédier des articles :

    Ceil(|->[ItemCount] / 12)

    Si ItemCount = 25 (12 articles par boîte) :

    Résultat : 3

Fonction Floor

La fonction Floor retourne le plus grand entier inférieur ou égal à un nombre. Cette fonction arrondit les valeurs décimales à l'entier inférieur.

Cette fonction retourne un type de données Nombre (entiers uniquement).

Syntaxe

Floor(exprAsNumber)

Paramètre

Description

exprAsNumber

Requis. Expression numérique à arrondir à l'entier inférieur.

Exemples

  1. Arrondir des nombres décimaux positifs à la valeur inférieure :

    Floor(3.14159)

    Résultat : 3

    Floor(3.9)

    Résultat : 3

  2. Arrondir des nombres décimaux négatifs (arrondit en s'éloignant de zéro) :

    Floor(-3.14159)

    Résultat : -4

    Floor(-3.1)

    Résultat : -4

  3. Calculer l'âge à partir d'une date de naissance en arrondissant le résultat de la fonction Age à l'entier inférieur :

    Floor(Age(AsDate(|->[DOB])))

    Si Age() retourne 34,7 années :

    Résultat : 34

  4. Calculer le nombre de lots complets à partir d'une quantité totale :

    Floor(|->[TotalUnits] / 6)

    Si TotalUnits = 20 (6 unités par lot) :

    Résultat : 3

Fonction FormatNumber

La fonction FormatNumber formate un nombre selon un modèle spécifié. Cette fonction est utile pour afficher des nombres sous forme de devise, de numéros de téléphone, de numéros de compte avec des zéros en tête, ou tout autre format personnalisé.

Cette fonction retourne un type de données Chaîne.

Remarque : Comme FormatNumber retourne une chaîne, elle doit généralement être appliquée en dernière fonction dans une expression lorsque d'autres calculs numériques ne sont plus nécessaires.

Syntaxe

FormatNumber(exprAsNumber, formatString [, useCommaDecimalAsBoolean])

Paramètre

Description

exprAsNumber

Requis. La valeur numérique à formater.

formatString

Requis. Chaîne de modèle définissant le format de sortie. Utilisez # pour les chiffres facultatifs (omis si zéro), 0 pour les chiffres obligatoires (affichés comme zéro si nécessaire), et . ou , pour le séparateur décimal.

useCommaDecimalAsBoolean

Facultatif. Définir sur True pour utiliser la virgule comme séparateur décimal (format européen). Par défaut False (point comme séparateur décimal).

Caractères du modèle de format

Caractère

Description

#

Espace réservé pour chiffre facultatif. Affiche le chiffre s'il est présent ; sinon, n'affiche rien.

0

Espace réservé pour chiffre obligatoire. Affiche le chiffre s'il est présent ; sinon, affiche zéro.

.

Séparateur décimal (ou séparateur de milliers lorsque useCommaDecimal est True).

,

Séparateur de milliers (ou séparateur décimal lorsque useCommaDecimal est True).

Remarque : Si le nombre à formater comporte plus de chiffres que l'expression de formatage, les chiffres de tête seront tronqués. Assurez-vous que votre modèle de format comporte suffisamment d'espaces réservés pour les valeurs les plus grandes attendues.

Exemples

  1. Formater un nombre en devise avec séparateurs de milliers :

    FormatNumber(1234567.89, "$###,###,###.00")

    Résultat : "$1,234,567.89"

  2. Formater un numéro de téléphone à partir d'une valeur numérique :

    FormatNumber(CleanNumber(|->[phone]), "(###) ###-####")

    Si phone = "5551234567" :

    Résultat : "(555) 123-4567"

  3. Compléter un nombre avec des zéros en tête :

    FormatNumber(|->[contactID], "00000")

    Si contactID = 1 :

    Résultat : "00001"

    Si contactID = 123 :

    Résultat : "00123"

  4. Formater un nombre décimal avec un nombre fixe de décimales :

    FormatNumber(42.5, "#.00")

    Résultat : "2.50"

    FormatNumber(42.5, "##.00")

    Résultat : "42.50"

  5. Formater en notation décimale européenne (virgule comme séparateur décimal) :

    FormatNumber(1234.56, "###.###,00", True)

    Résultat : "1.234,56"

  6. Formater un prix avec un symbole de devise :

    FormatNumber(|->[Price], "$#,##0.00")

    Si Price = 99.9 :

    Résultat : "$99.90"

  7. Formater un nombre avec plus de chiffres que prévu par l'expression de format :

    FormatNumber(12345, "0000")

    Résultat : "2345"

    Le format "0000" ne comporte que quatre espaces réservés, le chiffre 1 de tête est donc tronqué.

Fonction Rand

La fonction Rand génère des nombres aléatoires. Lorsque le paramètre est supérieur à 1, elle retourne un entier aléatoire de 0 jusqu'à la valeur du paramètre (non comprise). Lorsque le paramètre est 1, elle retourne un nombre décimal aléatoire entre 0 et 1.

Cette fonction retourne un type de données Nombre.

Syntaxe

Rand(expression)

Paramètre

Description

expression

Requis. Lorsque supérieur à 1, spécifie la borne supérieure (exclusive) pour la génération d'entiers aléatoires. Lorsque égal à 1, génère un nombre décimal aléatoire entre 0 et 1.

Comportement

Valeur du paramètre

Résultat

Rand(n) où n > 1

Retourne un entier aléatoire de 0 à n-1 (inclus)

Rand(1)

Retourne un nombre décimal à virgule flottante aléatoire entre 0 et 1

Exemples

  1. Générer un entier aléatoire de 0 à 4 :

    Rand(5)

    Résultat : 0, 1, 2, 3 ou 4 (aléatoirement)

  2. Générer un entier aléatoire de 1 à 5 (ajouter 1 pour décaler la plage) :

    Rand(5) + 1

    Résultat : 1, 2, 3, 4 ou 5 (aléatoirement)

  3. Générer un nombre décimal aléatoire entre 0 et 1 :

    Rand(1)

    Résultat : une valeur décimale comme 0.0344, 0.7821, etc.

  4. Sélectionner aléatoirement l'une de plusieurs options textuelles à l'aide d'une instruction Switch :

    Switch(Rand(3))
    {
    case 0:
    "Thank you for your loyalty!"
    case 1:
    "We appreciate your business!"
    case 2:
    "You're a valued customer!"
    }

    Résultat : l'un des trois messages, sélectionné aléatoirement

  5. Générer un pourcentage aléatoire :

    Round(Rand(1) * 100, 0)

    Résultat : un entier aléatoire de 0 à 100

  6. Attribuer aléatoirement des destinataires à des groupes de test (tests A/B) :

    If(Rand(2) = 0) {"Group A"} else {"Group B"}

    Résultat : "Group A" ou "Group B" (aléatoirement, environ 50/50)

Remarques

  • Les valeurs aléatoires sont générées au moment de la composition. Chaque destinataire d'un travail reçoit sa propre valeur aléatoire. Toutefois, si le même ADOR est évalué plusieurs fois pour un même destinataire, il retournera la même valeur aléatoire.

  • Lors de la génération de valeurs aléatoires pour un grand nombre de destinataires avec une plage de valeurs restreinte, certains destinataires obtiendront la même valeur aléatoire.

Fonction Round

La fonction Round arrondit un nombre à un nombre spécifié de décimales en utilisant les règles d'arrondi standard (0-4 arrondit vers le bas, 5-9 arrondit vers le haut).

Cette fonction retourne un type de données Nombre.

Syntaxe

Round(exprAsNumber [, decimalPlaces])

Paramètre

Description

exprAsNumber

Requis. La valeur numérique à arrondir.

decimalPlaces

Facultatif. Le nombre de décimales pour l'arrondi. Par défaut 0 (arrondit à l'entier le plus proche) si omis.

Exemples

  1. Arrondir à l'entier le plus proche (comportement par défaut) :

    Round(3.14159)

    Résultat : 3

    Round(3.5)

    Résultat : 4

    Round(3.49)

    Résultat : 3

  2. Arrondir des nombres négatifs :

    Round(-3.14159)

    Résultat : -3

    Round(-3.5)

    Résultat : -4

  3. Arrondir à un nombre spécifique de décimales :

    Round(3.14159, 2)

    Résultat : 3.14

    Round(3.14159, 4)

    Résultat : 3.1416

    Round(-3.14159, 4)

    Résultat : -3.1416

  4. Calculer la taxe de vente et arrondir à 2 décimales :

    Round(|->[last purchase] / 100 * 7, 2)

    Si last purchase = 49.99 et le taux de taxe est de 7 % :

    Résultat : 3.50

  5. Arrondir un total calculé pour l'affichage :

    Round(|->[Subtotal] + |->[Tax] + |->[Shipping], 2)

    Si Subtotal = 99.99, Tax = 8.25, Shipping = 5.99 :

    Résultat : 114.23

  6. Arrondir à une décimale pour l'affichage d'une note :

    Round(|->[AverageScore], 1)

    Si AverageScore = 4.567 :

    Résultat : 4.6

Rubriques associées