Klasse CX_FORMULA - Operatoren, arithmetische Funktionen
Es gibt folgende Operatoren:
Operator | Semantik | Priorität | Bemerkungen |
---|---|---|---|
- | Vorzeichenumkehr | 10 | |
* | Multiplikation | 9 | |
/ | Division | 9 | |
+ | Addition | 8 | auch für Zeichenketten definiert: "abc" + "DE" ergibt "abcDE" |
- | Subtraktion | 8 | |
< | Vergleich: kleiner | 6 | Ergebnis ist ein Objekt der Klasse CX_BOOLEAN |
> | Vergleich: größer | 6 | Ergebnis ist ein Objekt der Klasse CX_BOOLEAN |
<= | Vergleich: kleiner-gleich | 6 | Ergebnis ist ein Objekt der Klasse CX_BOOLEAN |
>= | Vergleich: größer-gleich | 6 | Ergebnis ist ein Objekt der Klasse CX_BOOLEAN |
= | Vergleich: gleich | 6 | Ergebnis ist ein Objekt der Klasse CX_BOOLEAN |
!= | Vergleich: ungleich | 6 | als Synonyme werden (bei der Eingabe) auch <> und >< akzeptiert |
! | Negation (logisch) | 5 | negiert ein Vergleichsergebnis (Klasse CX_BOOLEAN); bitweise Negation für Objekte der Klasse CX_BIT_PATTERN |
& | logische Konjunktion | 4 | für Vergleichsergebnisse (CX_BOOLEAN) und Objekte der Klasse CX_BIT_PATTERN |
^ | exklusiv Oder | 4 | für Vergleichsergebnisse (CX_BOOLEAN) und Objekte der Klasse CX_BIT_PATTERN |
| | logische Disjunktion | 3 | für Vergleichsergebnisse (CX_BOOLEAN) und Objekte der Klasse CX_BIT_PATTERN |
:= | Wertzuweisung | 2 | |
if | für bedingte Ausdrücke | 1 | |
F(...) | Funktionsaufruf | 1 | Aufruf einer beliebigen Funktion, für F steht der Name der Funktion |
else | für bedingte Ausdrücke | 0 |
Die Priorität bestimmt die Reihenfolge der Auswertung, solange nicht durch die
Zusammenfassung mit Klammern ( ...) eine davon abweichende Zusammenfassung der Terme
vorgegeben wird.
Mehrere Funktionsparameter werden durch Komma getrennt. Einzelne Ausdrücke, die
unabhängig voneinander ausgewertet werden sollen, sind durch Semikolon zu trennen
(sinnvoll bei Zuweisungen - siehe Beispiele).
Folgende arithmetische Funktionen, die als Argument(e) reelle Zahlen erwarten (d.h. Klasse CX_NUMERIC), können in einer Formel aufgerufen werden:
- trigonometrische Funktionen
sin(x) sin x cos(x) cos x tan(x) tan x cot(x) 1 / tan(x) arcsin(x) arcsin x arccos(x) arccos x arctan(x) arctan x arc(x) x * 3.1415926535 / 180.0 - hyperbolische Funktionen
sinh(x) ½ (ex - e-x) cosh(x) ½ (ex + e-x) tanh(x) (ex - e-x) / (ex + e-x) - sonstige
log(x) log10 x ln(x) ln x exp(x) ex sqrt(x) x½ pow(x, n) xn
Für relle (Klasse CX_NUMERIC) und dimensionsbehaftete Zahlen (Klasse CX_VALUE) gibt es folgende Funktionen:
min(a, b) if (a < b) a else b max(a, b) if (a > b) a else b floor(x) größte ganze Zahl < x ceil(x) kleinste ganze Zahl > x round(x, n) x nach n-ter Stelle runden truncate(x, n) x nach n-ter Stelle ungerundet "abschneiden"