progress-4gl
Mit Zahlen arbeiten
Suche…
Einführung
Fortschritt ABL unterstützt drei Zahlenformate: 32- und 64-Bit-Ganzzahlen und Floats.
Operatoren
Progress unterstützt + / - * als Operatoren. Sie können nicht überladen werden. Division gibt immer eine Dezimalzahl zurück. Wenn eine der Zahlen in einer Berechnung eine Dezimalzahl ist, wird eine Dezimalzahl zurückgegeben. Ansonsten ein INTEGER
oder INT64
.
Es gibt keinen +=
oder ++
Operator. Um eine Variable zu vergrößern oder zu verkleinern, müssen Sie sie sich plus oder minus etwas zuordnen. So fügen Sie einer Variablen 1 hinzu: 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
Weitere mathematische Funktionen
EXP - Gibt das Ergebnis der Erhöhung einer Zahl in Potenz zurück.
EXP (Basis, Exponent)
MESSAGE EXP(10, 2) VIEW-AS ALERT-BOX. // Messages 100
SQRT - Gibt die Quadratwurzel einer Zahl zurück.
SQRT (Nummer)
MESSAGE "The square root of 256 is " SQRT(256) VIEW-AS ALERT-BOX. // Messages 16
MODULO - Bestimmt den Rest nach der Division.
Ausdruck MODULO-Basis
DISPLAY 52 MODULO 12. //Displays 4
ROUND - Rundet einen Dezimalausdruck auf eine bestimmte Anzahl von Nachkommastellen.
RUNDE (Anzahl, Präzision)
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 Schneidet einen Dezimalausdruck auf eine bestimmte Anzahl von Dezimalstellen ab und gibt einen Dezimalwert zurück.
TRUNCATE (Anzahl, Orte)
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 - Gibt den absoluten Wert einer Zahl zurück
DISPLAY ABS(10 - 12). //Displays 2
DISPLAY ABS(-2) = ABS(2). //Displays yes
MINIMUM und MAXIMUM - liefert die kleinste und größte Zahl
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
Zahlen vergleichen
Es gibt Standardfunktionen zum Vergleich von Gleichheit, Ungleichheit usw.
Name | Symbol | Alternative | Beispiel |
---|---|---|---|
Gleich | = | EQ | i = j |
Nicht gleich | <> | NE | ich <> j |
Weniger als | < | LT | ich <j |
weniger als oder gleich | <= | LE | i <= j |
Größer als | > = | GT | i> j |
Größer als oder gleich | ≥ = | GE | i> = j |
Das Symbol kann mit der Alternative ausgetauscht werden und umgekehrt. var1 <> var2
ist also dasselbe wie var1 NE var2
.
Sie können einen Float mit einer Ganzzahl vergleichen, aber Sie können beispielsweise kein Datum mit einer Ganzzahl vergleichen.
Zufallszahlengenerator
RANDOM - generiert eine Zufallszahl
RANDOM (niedrig, hoch)
Erzeugt eine Pseudo-Zufallszahl zwischen niedrig und hoch
// 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.