@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.
Trigonometrische und transzendentale Funktionen
Genauigkeit der internen Berechnungen
Anzeigegenauigkeit und Ausgabeformat
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]
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.
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) |
| MOD | modulo (gibt den Rest zurück, wenn der erste Parameter durch den zweiten dividiert wird) |
| %% | wie MOD |
| SHL | arithmetische Linksverschiebung des ersten Parameters, abgeschnitten gegen Null auf eine ganze Zahl, um die durch den zweiten Parameter angegebene Anzahl von Bits |
| << | dass elbe wieSHL |
| SHR | arithmetische 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
| AND | bitweise und (gibt 1 für jede Bitposition zurück, bei der die entsprechenden Bits in beiden Parametern 1 sind) |
| & | gleich wie AND |
| OR | bitweise oder (gibt 1 für jede Bitposition zurück, bei der das entsprechende Bit in mindestens einem Parameter 1 ist) |
| | | dasselbe wie OR |
| XOR | bitweises 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 .
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)
| 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 .
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.