progress-4gl
Arbetar med siffror
Sök…
Introduktion
Progress ABL stöder tre nummerformat: 32 och 64 bitars heltal och flottörer.
operatörer
Progress stöder + / - * som operatörer. De kan inte överbelastas. Division ger alltid en decimal. Om något av siffrorna i en beräkning är en decimal kommer en decimal att returneras. Annars en INTEGER
eller INT64
.
Det finns ingen +=
eller ++
operatör. För att öka eller minska en variabel måste du tilldela den till sig själv plus eller minus något. Så för att lägga till 1 till en variabel gör du: 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
Fler matematiska funktioner
EXP - Returnerar resultatet av att höja ett nummer till en effekt.
EXP (bas, exponent)
MESSAGE EXP(10, 2) VIEW-AS ALERT-BOX. // Messages 100
SQRT - Returnerar kvadratroten till ett nummer.
SQRT (nummer)
MESSAGE "The square root of 256 is " SQRT(256) VIEW-AS ALERT-BOX. // Messages 16
MODULO - Bestämmer resten efter uppdelning.
uttryck MODULO-bas
DISPLAY 52 MODULO 12. //Displays 4
ROUND - Rundar ett decimaluttryck till ett specificerat antal platser efter decimalpunkten.
RUND (antal, precision)
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 Avkortar ett decimalt uttryck till ett specificerat antal decimaler och returnerar ett decimalvärde.
TRUNCATE (antal, platser)
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
ABSOLUT - Returnerar ett tals absoluta värde
DISPLAY ABS(10 - 12). //Displays 2
DISPLAY ABS(-2) = ABS(2). //Displays yes
MINIMUM och MAXIMUM - returnerar små och största antal
MINIMUM (nummer1, nummer2, ... nummern)
MAXIMUM (nummer1, nummer2, ... nummern)
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
Jämförelse av siffror
Det finns standardfunktioner inbyggda för att jämföra jämlikhet, ojämlikhet etc.
namn | Symbol | Alternativ | Exempel |
---|---|---|---|
Likvärdig | = | EQ | i = j |
Inte jämnlikt | <> | NE | i <> j |
Mindre än | < | LT | i <j |
mindre än eller lika | <= | LE | i <= j |
Större än | > = | GT | i> j |
Större än eller lika med | ≥ = | GE | i> = j |
Symbolen kan bytas ut med alternativet och vice versa. Så var1 <> var2
är samma sak som var1 NE var2
.
Du kan jämföra en flottör med ett heltal men du kan inte jämföra exempelvis ett datum med ett heltal.
Slumptalsgenerator
RANDOM - genererar ett slumpmässigt nummer
RANDOM (låg, hög)
Genererar ett pseudo slumpmässigt heltal mellan lågt och högt
// 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.