@EVAL[Ausdruck[=Displayformat]]: Wertet einen mathematischen Ausdruck aus und gibt seinen Wert in dem durch displayformat angegebenen Format oder im Standardformat zurück. Parameterinterpretation unten beschreibt, was der Ausdruck enthalten kann. UnterAnzeigegenauigkeit und Ausgabeformat wird das Ergebnisformat erläutert.

 

Der Ausdruck kann Umgebungsvariablen und andere Variablenfunktionen enthalten und kann alle unten aufgeführten Operatoren verwenden. @EVAL unterstützt auch Klammern (zur Steuerung der Auswertungsreihenfolge), Kommas, Hexadezimale und Dezimaltrennzeichen. Klammern können verschachtelt werden. @EVAL entfernt führende und nachfolgende Nullen aus dem Ergebnis, es sei denn, Sie verwenden die Operatoren zur Ausgabeformatierung.

 

@EVAL unterstützt sehr große Zahlen. Die maximale Größe beträgt 2.147.483.647 Ziffern unter Windows x64. (Unter Windows x86 ist der Arbeitsspeicher auf deutlich weniger beschränkt). Wenn Sie mehr als die standardmäßigen Dezimalwerte verwenden möchten, müssen Sie die Konfigurationsoptionen von @Eval Precision ändern  oder das Format "=x.y" in @EVAL verwenden . Die reinen Ganzzahloperatoren (AND, OR und XOR) sind auf 64-Bit-Ganzzahlen beschränkt.

 

Onestep        Interpretation der Parameter

Onestep        Arithmetische Operatoren

Onestep        Trigonometrische und transzendentale Funktionen

Onestep        Andere Funktionen

Onestep        Reihenfolge der Vorrangigkeit

Onestep        Genauigkeit der internen Berechnungen

Onestep        Anzeigegenauigkeit und Ausgabeformat

Onestep        Beispiele

 

Interpretation der Parameter

 

EinAusdruck kann Umgebungs- und interne Variablen, Array-Variablen und Variablenfunktionen enthalten. Nach dem Auflösen aller Variablen und Funktionen darf er nur noch aus numerischen Zeichenketten und Funktionsnamen in Trigonometrische und transzendentale Funktionen oder Andere Funktionen bestehen, die durch arithmetische Operatoren verbunden und optional mit Klammern gruppiert sind.

 

Mit @EVAL können Sie Ausdrücke vereinfachen , indem Sie das  %-Zeichen vor den Namen von Umgebungsvariablen weglassen . Dies verhindert auch, dass der TCC Parser die Variablen vor der Übergabe an @EVAL (möglicherweise fälschlicherweise) expandiert. Für interne Variablen und Variablenfunktionen  müssen Sie das%-Zeichen einfügen . @EVAL erlaubt es Ihnen auch, Zeichen zu verwenden, die normalerweise eine besondere Bedeutung für TCC z. B.& < > ^ | zu verwenden, ohne deren besondere Bedeutung auszuschalten oder sie in Anführungszeichen zu setzen.

 

Hinweis: Um sicherzustellen, dass die Ausdrücke korrekt interpretiert werden,  sollten auf beiden Seiten der OperatorenLeerzeichen stehen und Klammern großzügig verwendet werden. Ein Beispiel:

 

%@eval[(20 %% 3) + 4]

%@eval[12 and 65]

 

@EVAL akzeptiert Zahlen in der Exponenten-Syntax der wissenschaftlichen Notation, d.h. 1575e-2 = 15,75. Die Ausgabe in wissenschaftlicher Notation können Sie mit der Syntax @eval[...=E] angeben . Zum Beispiel:

 

echo %@eval[1.4567e+4*7.6541e+2=E]

 

Sie können =E mit einer Anzeigegenauigkeit kombinieren (siehe unten):

 

echo %@eval[1.4567e+4*7.6541e+2=E1.20]

 

Zahlenbasis

 

Wenn eine Zeichenkette mit den Zeichen 0xbeginnt , wird sie als Ganzzahl in hexadezimaler Schreibweise interpretiert. Beginnt eine Zeichenkette mit den Zeichen0b, wird sie als Ganzzahl in binärer Schreibweise interpretiert. Beginnt eine Zeich enkette mit den Zeichen0o, wird sie als Ganzzahl in oktaler Schreibweise interpretiert. Jede andere numerische Zeichenfolge wird als Dezimalzahl interpretiert.

 

Ein Beispiel:

 

[c:\] echo %@eval[0x10 + 16]

32

 

Sie können die hexadezimale Ausgabe mit der speziellen Syntax @eval[...=H] angeben. Zum Beispiel:

 

echo %@eval[3*6=H]

 

gibt 12 (hex) aus. Ein führendes 0x wird in der Ausgabe nichtberücksichtigt. Zur Konvertierung zwischen dezimalen und hexadezimalen Formaten siehe die Funktion @CONVERT.

 

Sie können die binäre Ausgabe mit der speziellen Syntax @eval[...=B] angeben. Zum Beispiel:

 

echo %@eval[3*6=B]

 

Die Hex- und Binärausgabe ist auf 64-Bit-Ganzzahlen (mit Vorzeichen) beschränkt.

 

Arithmetische Operatoren

 

Jeder Operator akzeptiert sowohl ganzzahlige als auch nicht-ganzzahlige Parameter, außer wie unten angegeben.

 

Operatoren, die gebrochene Parameter akzeptieren

 

+(mit einem Parameter) Vorzeichen des numerischen Parameters (z. B. +3)
+(mit zwei Parametern) Addition
-(mit einem Parameter) Negation eines symbolischen Parameters (z. B. -n) oder Vorzeichen eines numerischen Parameters (z. B. -1, +3)
-(mit zwei Parametern) Subtraktion
*Multiplikation
/Division
**Potenzierung
!boolesch nicht

 

Operatoren, die ganzzahlige Parameter erfordern

 

\ganzzahlige Division (gibt den ganzzahligen Teil des Quotienten zurück)
MODmodulo (gibt den Rest zurück, wenn der erste Parameter durch den zweiten dividiert wird)
%%wie MOD
SHLarithmetische Linksverschiebung des ersten Parameters, abgeschnitten gegen Null auf eine ganze Zahl, um die durch den zweiten Parameter angegebene Anzahl von Bits
<<dass elbe wieSHL
SHRarithmetische Rechtsverschiebung des ersten Parameters, gegen Null auf eine ganze Zahl abgeschnitten, um die durch den zweiten Parameter angegebene Anzahl von Bits
>>wie SHR
>größer als
<kleiner als
>=größer als oder gleich
<=kleiner als oder gleich
!=nicht gleich

 

Operatoren, die Parameter auf Ganzzahlen abschneiden

 

ANDbitweise und (gibt 1 für jede Bitposition zurück, bei der die entsprechenden Bits in beiden Parametern 1 sind)
&gleich wie AND
ORbitweise oder (gibt 1 für jede Bitposition zurück, bei der das entsprechende Bit in mindestens einem Parameter 1 ist)
| dasselbe wie OR
XORbitweises exklusives oder (liefert 1 für jede Bitposition, an der die entsprechenden Bits der beiden Parameter unterschiedlich sind)
^dass elbe wie XOR
~unäres NOT

 

Trigonometrische und transzendentale Funktionen

 

EinAusdruck kann die folgenden trigonometrischen und transzendentalen Funktionen enthalten. Das Argument wird als Bogenmaß interpretiert.

 

log(x)natürlicher Logarithmus
log2(x)Binärer Logarithmus
log10(x)log 10
exp(x)Exponential
sin(x) sinus
asin(x)Arkussinus
sinh(x)hyperbolischer Sinus
cos(x)Kosinus        
acos(x)arccosine        
cosh(x)hyperbolischer Kosinus        
tan(x) Tangens        
atan(x)Arkustangens        
tanh(x)hyperbolischer Tangens

 

Die spezielle Zeichenfolge PI ist eine Abkürzung für den Wert 3.14159265358979323846 .

 

Andere Funktionen

 

abs(x)        absoluter Wert

ceil(x)        Höchstwert

fact(x)        faktoriell

floor(x)        floor

gcd(x y)        größter gemeinsamer Teiler (max. 64-Bit-Ganzzahl)

lcm(x y)        kleinstes gemeinsames Vielfaches (max. 64-Bit-Ganzzahl)

ror(x y z)        rotiert x rechts y Bits mit einer variablen Größe von z (in Bits) (max 64-Bit Ganzzahl)

rol(x y z)        rot iertx links y Bits mit einer variablen Größevon z ( in Bits) (max. 64-Bit-Ganzzahl)

 

Reihenfolge der Vorrangigkeit

 

1.Variablen
2.Ausdrücke in passenden Klammern
3.Funktionen, die unter Trigonometrische und transzendente Funktionenaufgeführt sind
4.Potenzierung
5.Multiplikation, Division und MOD
6.Addition und Subtraktion
7.>, <, AND, OR, XOR, NOT, SHL, und SHR

 

Wenn mehrere aufeinanderfolgende Ausdrücke einer einzigen Prioritätsstufe verwendet werden, erfolgt die Auswertung von links nach rechts.

 

Zum Beispiel wird3 + 4 * 2 als 3 + 8 interpretiert , nicht als 7 * 2. Um diese Auswertungsreihenfolge zu ändern, verwenden Sie Klammern, um die gewünschte Reihenfolge anzugeben.

 

Genauigkeit der internen Berechnungen

 

@EVAL unterstützt Zahlen mit einer Genauigkeit von bis zu 30.000 Stellen; es ist sehr unwahrscheinlich, dass Sie eine höhere Genauigkeit benötigen! Einige Funktionen (gcd, lcm, ror, rol) arbeiten mit 64-Bit-Ganzzahlen.

 

Anzeigegenauigkeit und Ausgabeformat

 

Die maximale Anzeigegenauigkeit beträgt 15.000 Ziffern links vom Dezimalpunkt und 15.000 Ziffern rechts davon. Sie können die standardmäßige Dezimalpräzision mit dem  Befehl OPTION, den @EVAL Precision-Konfigurationsoptionen und mit dem  Befehl SETDOS /F ändern .  Das Dezimaltrennzeichen können Sie mit der Konfigurationsoption für Dezimalzeichen oder mit dem Befehl SETDOS /G ändern .

 

Sie können das Anzeigeformat für die aktuelle Instanz von @EVAL durch die Angabe von displayformatändern .

 

Anzeigeformat für wissenschaftliche Notation

 

Wenn dasAnzeigeformatE ist , erfolgt dieAusgabe in wissenschaftlicher Notation. Zum Beispiel:

 

echo %@eval[1.4567e+4*7.6541e+2=E]

 

Sie können =E mit einer Anzeigegenauigkeit kombinieren (siehe unten):

 

echo %@eval[1.4567e+4*7.6541e+2=E1.15]

 

Hexadezimales Anzeigeformat

 

Wenn displayformat der Buchstabe H ist, erfolgt die Ausgabe in hexadezimaler Form. Wenn displayformat der BuchstabeX ist , wirddie Ausgabe hexadezimal mit einem führenden 0x erfolgen.

 

Binäres Anzeigeformat

 

Wenn das Anzeigeformat der Buchstabe B ist, erfolgt die Ausgabe im Binärformat.

 

Oktal-Anzeigeformat

 

Wenn displayformat der Buchstabe O ist, erfolgt die Ausgabe im Oktalformat.

 

Explizite Genauigkeit

 

Wenn dasAnzeigeformat i.a ist, dann:

 

i muss eine Zahl sein, die die minimale Dezimalgenauigkeit angibt (die minimale Anzahl der angezeigten Dezimalstellen) ;

a muss eine Zahl sein, die die maximale Dezimalgenauigkeit angibt.

das Zeichen, das i und atrennt,  kann das Komma sein, wenn es Ihr Dezimaltrennzeichen ist

 

Sie können entweder einen oder beide Parameter i und aangeben . Ist i >a oder wird  nur i angegeben,  wird i sowohl als Mindest- als auch als Höchstpräzision verwendet, z. B. sind  sowohl =2 als auch =2,1 gleichbedeutend mit =2,2.

 

Wenn das letzte Zeichen des Anzeigeformats+ ist , stellt @EVAL positiven Zahlen ein + voran .

 

Beispiele:

 

Ausdruck

Wert

@eval[3 / 6=2.4]

0.50

@eval[3 / 6=4.4]

0.5000

@eval[3 / 7]

0.4285714286

@eval[3 / 7=.4]

0.4286

@eval[3 / 7=2.2]

0.42

@eval[3 / 7=2]

0.42

@eval[3 / 7=2+]

+0.42

 

Siehe auch: @DEC und @INC.