progress-4gl
Lavorare con i numeri
Ricerca…
introduzione
Progress ABL supporta tre formati numerici: interi e float 32 e 64 bit.
operatori
Progress supporta + / - * come operatori. Non possono essere sovraccaricati. La divisione restituisce sempre un decimale. Se uno qualsiasi dei numeri in un calcolo è un decimale, verrà restituito un decimale. Altrimenti un INTEGER
o INT64
.
Non esiste un operatore +=
o ++
. Per aumentare o diminuire una variabile devi assegnarla a se stessa più o meno qualcosa. Quindi per aggiungere 1 a una variabile, fai: 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
Altre funzioni matematiche
EXP - Restituisce il risultato dell'aumento di un numero a una potenza.
EXP (base, esponente)
MESSAGE EXP(10, 2) VIEW-AS ALERT-BOX. // Messages 100
SQRT - Restituisce la radice quadrata di un numero.
SQRT (numero)
MESSAGE "The square root of 256 is " SQRT(256) VIEW-AS ALERT-BOX. // Messages 16
MODULO - Determina il resto dopo la divisione.
espressione MODULO base
DISPLAY 52 MODULO 12. //Displays 4
ROUND - Arrotonda un'espressione decimale a un numero specificato di posizioni dopo il punto decimale.
ROUND (numero, precisione)
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 Tronca un'espressione decimale a un numero specificato di posizioni decimali, restituendo un valore decimale.
TRUNCATE (numero, luoghi)
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 - Restituisce il valore assoluto di un numero
DISPLAY ABS(10 - 12). //Displays 2
DISPLAY ABS(-2) = ABS(2). //Displays yes
MINIMO e MASSIMO - restituisce i piccoli e il numero più grande
MINIMO (numero1, numero2, ... numeron)
MASSIMO (numero1, numero2, ... numeron)
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
Confrontare i numeri
Ci sono funzioni standard incorporate per confrontare l'uguaglianza, la disuguaglianza, ecc.
Nome | Simbolo | Alternativa | Esempio |
---|---|---|---|
Pari | = | EQ | i = j |
Non uguale | <> | NE | io <> j |
Meno di | < | LT | io <j |
inferiore o uguale | <= | LE | i <= j |
Più grande di | > = | GT | io> j |
Maggiore o uguale | ≥ = | GE | i> = j |
Il simbolo può essere scambiato con l'alternativa e viceversa. Quindi var1 <> var2
è la stessa cosa di var1 NE var2
.
Puoi confrontare un float con un numero intero ma non puoi confrontare per esempio una data con un numero intero.
Generatore di numeri casuali
RANDOM : genera un numero casuale
CASUALE (basso, alto)
Genera un intero pseudo casuale tra basso e alto
// 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.