@EVAL[expression[=format d'affichage]]: Évalue une expression mathématique et renvoie sa valeur dans le format spécifié par format d'affichage ou au format par défaut. Interprétation des paramètres  ci-dessous décrit ce que expression peut contenir. Précision d'affichage et format de sortie ci-dessous explique le format du résultat.

 

L'expression peut contenir des variables d'environnement et d'autres fonctions variables, et peut utiliser l'un des opérateurs répertoriés ci-dessous. @EVAL prend également en charge les parenthèses (pour contrôler l'ordre d'évaluation), les virgules, les hexadécimaux et les séparateurs décimaux. Les parenthèses peuvent être imbriquées. @EVAL supprimera les zéros de début et de fin du résultat, sauf si vous utilisez les opérateurs de formatage de sortie.

 

@EVAL prend en charge de très grands nombres. La taille maximale est de 2,147,483,647 64 86 XNUMX chiffres sous Windows xXNUMX. (Windows xXNUMX sera beaucoup moins limité par la mémoire). Si vous souhaitez utiliser plus que les valeurs décimales par défaut, vous devrez modifier votre @Eval Précision options de configuration ou utilisez le format "=x.y" dans @EVAL. Les opérateurs de type entier uniquement (AND, OR et XOR) sont limités aux entiers de 64 bits.

 

Un pas        Interprétation des paramètres

Un pas        Opérateurs arithmétiques

Un pas        Fonctions trigonométriques et transcendantales

Un pas        Autres fonctions

Un pas        Ordre de préséance

Un pas        Précision des calculs internes

Un pas        Précision d'affichage et format de sortie

Un pas        Exemples

 

Interprétation des paramètres

 

Expression peut contenir des variables d'environnement et internes, variables de tableauet fonctions variables. Une fois que toutes les variables et fonctions ont été développées, elles doivent être composées uniquement de chaînes numériques et de noms de fonctions dans Fonctions trigonométriques et transcendantales or Autres fonctions, connecté par Opérateurs arithmétiques et éventuellement regroupés avec des parenthèses.

 

@EVAL vous permet de simplifier expression en laissant tomber le % marque de pourcentage devant les noms de Variables d'environnement. Cela empêche également le TCC l'analyseur syntaxique d'étendre (peut-être par erreur) les variables avant de les transmettre à @EVAL. Vous devez inclure % pour les variables internes et les fonctions variables. @EVAL vous permet également d'utiliser des caractères qui ont normalement une signification particulière pour TCC par exemple : & ^ | sans désactiver leur signification particulière ni les citer.

 

Remarque: Pour être sur de expression est interprété correctement, espaces doivent être placés des deux côtés de chaque opérateur et les parenthèses doivent être utilisées généreusement. Par exemple:

 

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

%@eval[12 et 65]

 

@EVAL accepte les nombres dans la syntaxe des exposants de notation scientifique ; soit 1575e-2 = 15.75. Vous pouvez spécifier une sortie en notation scientifique avec la syntaxe @eval[...=E]. Par exemple:

 

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

 

Vous pouvez combiner =E avec une précision d'affichage (voir ci-dessous) :

 

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

 

Base numérique

 

Si une chaîne commence par les caractères 0x il est interprété comme un entier en notation hexadécimale. Si une chaîne commence par les caractères 0b il est interprété comme un entier en notation binaire. Si une chaîne commence par les caractères 0o il est interprété comme un entier en notation octale. Toute autre chaîne numérique est considérée comme un nombre décimal.

 

Par exemple :

 

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

32

 

Vous pouvez spécifier une sortie hexadécimale avec la syntaxe spéciale @eval[...=H]. Par exemple:

 

  écho %@eval[3*6=H]

 

sortira 12 (hexadécimal). Pas de leader 0x est inclus dans la sortie. Pour convertir entre les formats décimal et hexadécimal, consultez le @CONVERTIR la fonction.

 

Vous pouvez spécifier une sortie binaire avec la syntaxe spéciale @eval[...=B]. Par exemple:

 

écho %@eval[3*6=B]

 

La sortie hexadécimale et binaire est limitée aux entiers de 64 bits (signés).

 

Opérateurs arithmétiques

 

Chaque opérateur accepte à la fois les paramètres entiers et non entiers, sauf indication contraire ci-dessous.

 

Opérateurs acceptant des paramètres fractionnaires

 

+(avec un paramètre) signe du paramètre numérique (par exemple +3)
+(avec deux paramètres) ajout
-(avec un paramètre) négation d'un paramètre symbolique (par exemple, -n) ou signe d'un paramètre numérique (par exemple -1, +3)
-(avec deux paramètres) soustraction
*multiplication
/division
**exponentiation
!booléen ne sauraient

 

Opérateurs nécessitant des paramètres entiers

 

\division entière (renvoie la partie entière du quotient)
MODmodulo (renvoie le reste lorsque le premier paramètre est divisé par le second)
%%même que MOD
SHLdécalage arithmétique vers la gauche du premier paramètre, tronqué vers zéro vers un nombre entier, du nombre de bits spécifié par le deuxième paramètre
<<même que SHL
SHRdécalage arithmétique vers la droite du premier paramètre, tronqué vers zéro vers un nombre entier, du nombre de bits spécifié par le deuxième paramètre
>>même que SHR
>plus grand que
<moins que
>=Plus grand ou égal à
<=inférieur ou égal à
!=pas égal à

 

Opérateurs qui tronquent les paramètres en entiers

 

ETau niveau du bit et (renvoie 1 pour chaque position de bit où les bits correspondants dans les deux paramètres sont 1)
&même que ET
ORau niveau du bit ou (renvoie 1 pour chaque position de bit où le bit correspondant dans au moins un paramètre est 1)
|même que OR
GRATUITou exclusif au niveau du bit (renvoie 1 pour chaque position de bit où les bits correspondants des deux paramètres sont différents)
^même que GRATUIT
~unaire NON

 

Fonctions trigonométriques et transcendantales

 

Expression peut inclure les fonctions trigonométriques et transcendantales ci-dessous. L'argument est interprété en radians.

 

log (x)un algorithme naturel
log2(x)logarithme binaire
log10(x)journal 10
exp (x)exponentiel
péché (x)leur
asin (x)arc sinus
naissance(x)sinus hyperbolique
cos (x)cosinus        
acos (x)arccosinus        
coche(x)cosinus hyperbolique        
tan (x)tangente        
atan (x)arc tangent        
louche (x)tangente hyperbolique

 

La chaîne spéciale PI est un raccourci pour la valeur 3.14159265358979323846.

 

Autres fonctions

 

abs (x)        valeur absolue

ceil (x)        plafond

fait(x)        factoriel

plancher (x)        sol

pgcd(x et)        plus grand diviseur commun (entier maximum de 64 bits)

lcm(xy)        multiple le plus commun (entier maximum de 64 bits)

ror(xyz)        tourner x bon y bits avec une taille variable de z (en bits) (entier maximum de 64 bits)

rôle (x y z)        tourner x à gauche y bits avec une taille variable de z (en bits) (entier maximum de 64 bits)

 

Ordre de préséance

 

1.les variables
2.expressions entre parenthèses correspondantes
3.fonctions répertoriées dans Fonctions trigonométriques et transcendantales
4.exponentiation
5.multiplication, division et MOD
6.addition et soustraction
7.>, <, AND, OR, XOR, NOT, SHL et SHR

 

Lorsque plusieurs expressions consécutives d’un même niveau de priorité sont utilisées, l’évaluation s’effectue de gauche à droite.

 

Par exemple, 3 + 4*2 sera interprété comme 3 + 8, pas aussi 7 * 2. Pour modifier cet ordre d'évaluation, utilisez des parenthèses pour spécifier l'ordre souhaité.

 

Précision des calculs internes

 

@EVAL prend en charge les nombres jusqu'à 30,000 64 chiffres ; il est très peu probable que vous ayez besoin d'une plus grande précision que celle-ci ! Quelques fonctions (gcd, lcm, ror, rol) utilisent des entiers XNUMX bits.

 

Précision d'affichage et format de sortie

 

La précision d'affichage maximale est de 15,000 15,000 chiffres à gauche du point décimal et de XNUMX XNUMX chiffres à droite. Vous pouvez modifier la précision décimale par défaut avec le OPTION commande, le @EVAL Précision options de configuration, et avec le RÉGLAGES Commande /F. Vous pouvez modifier le séparateur décimal avec le caractère décimal option de configuration ou le RÉGLAGES Commande /G.

 

Vous pouvez modifier le format d'affichage de l'instance actuelle de @EVAL en précisant format d'affichage.

 

Format d'affichage de la notation scientifique

 

If format d'affichage is E, la sortie sera en notation scientifique. Par exemple:

 

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

 

Vous pouvez combiner =E avec une précision d'affichage (voir ci-dessous) :

 

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

 

Format d'affichage hexadécimal

 

If format d'affichage est la lettre H, la sortie sera hexadécimale. Si format d'affichage is X, la sortie sera hexadécimale avec un début 0x.

 

Format d'affichage binaire

 

If format d'affichage est la lettre B, la sortie sera binaire.

 

Format d'affichage octal

 

If format d'affichage est la lettre O, la sortie sera octale.

 

Précision explicite

 

If format d'affichage is je.a, puis:

 

i  doit être un nombre qui spécifie la précision décimale minimale (le nombre minimum de décimales affichées) ;

a doit être un nombre qui définit la précision décimale maximale.

le caractère séparant i et a peut être la virgule si c'est votre séparateur décimal

 

Vous pouvez spécifier l'un ou les deux paramètres i et a. If je > un, ou si seulement i est spécifié, i est utilisé à la fois comme précision minimale et maximale, par exemple tous les deux =2 et = 2.1 sont équivalents à = 2.2.

 

Si le dernier caractère du format d'affichage is +, @EVAL préfixera les nombres positifs avec un +.

 

Exemples :

 

Expression

Valeur

@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

 

Voir aussi: @DÉC et @INC.