progress-4gl
Travailler avec des nombres
Recherche…
Introduction
Progress ABL prend en charge trois formats de nombres: les entiers et les flottants 32 et 64 bits.
Les opérateurs
Progress prend en charge les opérateurs + / - *. Ils ne peuvent pas être surchargés. Division renvoie toujours une décimale. Si l'un des nombres dans un calcul est une décimale, une décimale sera renvoyée. Sinon un INTEGER
ou INT64
.
Il n'y a pas d'opérateur +=
ou ++
. Pour augmenter ou diminuer une variable, vous devez lui attribuer plus ou moins quelque chose. Donc, pour ajouter 1 à une variable que vous faites: i = i + 1.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE j AS INTEGER NO-UNDO.
i = 3.
j = 2.
DISPLAY i + j. // 3 + 2 = 5
DISPLAY i - j. // 3 - 2 = 1
DISPLAY i / j. // 3 / 2 = 1.5
DISPLAY INTEGER(i / j). //Integer(3/2) = 2.
DISPLAY i * j. //3 x 2 = 6
Plus de fonctions mathématiques
EXP - Renvoie le résultat de l'augmentation d'un nombre à une puissance.
EXP (base, exposant)
MESSAGE EXP(10, 2) VIEW-AS ALERT-BOX. // Messages 100
SQRT - Retourne la racine carrée d'un nombre.
SQRT (nombre)
MESSAGE "The square root of 256 is " SQRT(256) VIEW-AS ALERT-BOX. // Messages 16
MODULO - Détermine le reste après la division.
expression base MODULO
DISPLAY 52 MODULO 12. //Displays 4
ROUND - Arrondit une expression décimale à un nombre spécifié de lieux après le point décimal.
ROUND (nombre, précision)
DISPLAY ROUND(67.12345, 6) FORMAT "99.99999". // 67.12345
DISPLAY ROUND(67.12345, 5) FORMAT "99.99999". // 67.12345
DISPLAY ROUND(67.12345, 4) FORMAT "99.99999". // 67.12350
DISPLAY ROUND(67.12345, 3) FORMAT "99.99999". // 67.12300
DISPLAY ROUND(67.12345, 2) FORMAT "99.99999". // 67.12000
DISPLAY ROUND(67.12345, 1) FORMAT "99.99999". // 67.10000
DISPLAY ROUND(67.12345, 0) FORMAT "99.99999". // 67.00000
TRUNCATE Truncate une expression décimale à un nombre spécifié de décimales, renvoyant une valeur décimale.
TRUNCATE (nombre, lieux)
DISPLAY TRUNCATE(67.12345, 6) FORMAT "99.99999". // 67.12345
DISPLAY TRUNCATE(67.12345, 5) FORMAT "99.99999". // 67.12345
DISPLAY TRUNCATE(67.12345, 4) FORMAT "99.99999". // 67.12340
DISPLAY TRUNCATE(67.12345, 3) FORMAT "99.99999". // 67.12300
DISPLAY TRUNCATE(67.12345, 2) FORMAT "99.99999". // 67.12000
DISPLAY TRUNCATE(67.12345, 1) FORMAT "99.99999". // 67.10000
DISPLAY TRUNCATE(67.12345, 0) FORMAT "99.99999". // 67.00000
ABSOLUTE - Retourne la valeur absolue d'un nombre
DISPLAY ABS(10 - 12). //Displays 2
DISPLAY ABS(-2) = ABS(2). //Displays yes
MINIMUM et MAXIMUM - retourne le plus petit et le plus grand nombre
MINIMUM (number1, number2, ... numbern)
MAXIMUM (number1, number2, ... numbern)
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE j AS INTEGER NO-UNDO.
DEFINE VARIABLE k AS INTEGER NO-UNDO.
i = 40.
j = 45.
k = 56.
DISPLAY MINIMUM(i, j, k) MAXIMUM(i, j, k). // Displays 40 and 56
Comparaison des nombres
Il y a des fonctions standard intégrées pour comparer l'égalité, l'inégalité, etc.
prénom | symbole | Alternative | Exemple |
---|---|---|---|
Égal | = | EQ | i = j |
Inégal | <> | NE | i <> j |
Moins que | < | LT | i <j |
inférieur ou égal | <= | LE | i <= j |
Plus grand que | > = | GT | i> j |
Meilleur que ou égal | ≥ = | GE | i> = j |
Le symbole peut être échangé avec l'alternative et vice versa. Donc var1 <> var2
est la même chose que var1 NE var2
.
Vous pouvez comparer un flottant à un entier, mais vous ne pouvez pas comparer, par exemple, une date avec un entier.
Générateur de nombres aléatoires
RANDOM - génère un nombre aléatoire
RANDOM (bas, haut)
Génère un entier pseudo-aléatoire entre bas et haut
// Example that generates 20 random numbers between 1 and 20 (1 and 20 included)
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DO i = 1 TO 20.
DISPLAY i RANDOM(1, 20).
PAUSE.
END.