@EVAL[expression[=displayformat]]: Évalue une expression mathématique et renvoie sa valeur dans le format spécifié par displayformat ou dans le format par défaut. L'interprétation des paramètres ci-dessous décrit ce que l'expression peut contenir. Laprécision d'affichage et le format de sortie ci-dessous expliquent le format du résultat.
L'expression peut contenir des variables d'environnement et d'autres fonctions variables, et peut utiliser n'importe lequel des opérateurs énumérés ci-dessous. @EVAL prend également en charge les parenthèses (pour contrôler l'ordre d'évaluation), les virgules, les séparateurs hexadécimaux et décimaux. Les parenthèses peuvent être imbriquées. @EVAL supprime les zéros initiaux et finaux du résultat, à moins que vous n'utilisiez les opérateurs de formatage de sortie.
@EVAL prend en charge les très grands nombres. La taille maximale est de 2 147 483 647 chiffres sous Windows x64. (Windows x86 sera limité par la mémoire à beaucoup moins). Si vous souhaitez utiliser plus que les valeurs décimales par défaut, vous devrez modifier les options de configuration de @Eval Precision ou utiliser le format "=x.y" dans @EVAL . Les opérateurs sur les entiers (AND, OR et XOR) sont limités aux entiers de 64 bits.
Fonctions trigonométriques et transcendantes
Précision des calculs internes
Précision de l'affichage et format de sortie
L'expression peut contenir des variables d'environnement et des variables internes, des variables de tableau et des fonctions variables. Une fois que toutes les variables et fonctions ont été développées, elle doit être composée uniquement de chaînes numériques et de noms de fonctions dans Fonctions trigonométriques et transcendantes ou Autres fonctions, reliées par des opérateurs arithmétiques et éventuellement regroupées par des parenthèses.
@EVAL permet de simplifier les expressions en supprimant le % devant les noms des variables d'environnement. Cela empêche également l'analyseur TCC d'étendre (éventuellement de manière erronée) les variables avant de les transmettre à @EVAL. Vous devez inclure % pour les variables internes et les fonctions de variables .@EVAL vous permet également d'utiliser des caractères qui ont normalement une signification spéciale pour les variables internes. TCC par exemple, & < > ^ | sans désactiver leur signification spéciale ou les mettre entre guillemets.
Remarque : pour garantir une interprétation correcte des expressions, il convient de placer desespaces de part et d'autre de chaque opérateur et d'utiliser librement les parenthèses. Par exemple :
%@eval[(20 %% 3) + 4]
%@eval[12 and 65]
@EVAL accepte les nombres dans la syntaxe des exposants de la notation scientifique, c'est-à-dire 1575e-2 = 15,75. Vous pouvez spécifier la sortie en notation scientifique avec la syntaxe @eval[...=E]. Par exemple :
echo %@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]
Si une chaîne commence par les caractères 0x, elle est interprétée comme un nombre entier en notation hexadécimale . Si une chaîne commence par les caractères 0b, elle est interprétée comme un nombre entier en notation binaire . Si une chaîne commence par les caractères 0o, elle est interprétée comme un nombre entier en notation octale. Toute autre chaîne numérique est considérée comme un nombre décimal.
Par exemple, vous pouvez spécifier une sortie hexadécimale :
[c:\] echo %@eval[0x10 + 16]
32
Vous pouvez spécifier la sortie hexadécimale avec la syntaxe spéciale @eval[...=H]. Par exemple, @eval[...=H]
echo %@eval[3*6=H]
produira 12 (hexadécimal). Aucun 0x de tête n'est inclus dans la sortie. Pour convertir les formats décimal et hexadécimal, voir la fonction @CONVERT de .
Vous pouvez spécifier la sortie binaire avec la syntaxe spéciale @eval[...=B]. Par exemple :
echo %@eval[3*6=B]
La sortie hexadécimale et binaire est limitée aux entiers de 64 bits (signés).
Tous les opérateurs acceptent des paramètres entiers et non entiers, sauf dans les cas suivants.
Opérateurs acceptant des paramètres fractionnaires
| + | (avec un paramètre) signe du paramètre numérique (par exemple +3) |
| + | (avec deux paramètres) addition |
| - | (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 non |
Opérateurs nécessitant des paramètres entiers
| \ | division entière (renvoie la partie entière du quotient) |
| MOD | modulo (renvoie le reste lorsque le premier paramètre est divisé par le second) |
| %% | identique à MOD |
| SHL | décalage arithmétique vers la gauche du premier paramètre, tronqué vers zéro pour obtenir un entier, du nombre de bits spécifié par le second paramètre |
| << | idem SHL |
| SHR | décalage arithmétique vers la droite du premier paramètre, tronqué vers zéro en un entier, du nombre de bits spécifié par le second paramètre |
| >> | id emSHR |
| > | supérieur à |
| < | inférieur à |
| >= | supérieur ou égal à |
| <= | inférieur ou égal à |
| != | différent de |
Opérateurs qui tronquent les paramètres en entiers
| AND | bitwise and (renvoie 1 pour chaque position de bit où les bits correspondants dans les deux paramètres sont à 1) |
| & | identique à AND |
| OR | bitwise or (renvoie 1 pour chaque position de bit où le bit correspondant dans au moins un paramètre est 1) |
| | | identique àOR |
| XOR | bitwise exclusive or (renvoie 1 pour chaque position de bit où les bits correspondants des deux paramètres sont différents) |
| ^ | identique àXOR |
| ~ | unaire NOT |
Fonctions trigonométriques et transcendantes
L'expression peut inclure les fonctions trigonométriques et transcendantes ci-dessous. L'argument est interprété en radians.
| log(x) | logarithme naturel |
| log2(x) | logarithme binaire |
| log10(x) | log 10 |
| exp(x) | exponentielle |
| sin(x) | sinus |
| asin(x) | arcsine |
| sinh(x) | sinus hyperbolique |
| cos(x) | cosinus |
| acos(x) | arccosine |
| cosh(x) | cosinus hyperbolique |
| tan(x) | tangente |
| atan(x) | arctangente |
| tanh(x) | tangente hyperbolique |
La chaîne spéciale PI est un raccourci pour la valeur 3.14159265358979323846.
abs(x) valeur absolue
ceil(x) plafond
fact(x) factorielle
floor(x) floor
gcd(x y) plus grand diviseur commun (entier de 64 bits maximum)
lcm(x y) plus petit commun multiple (entier de 64 bits maximum)
ror(x y z) rotation x à droite y bits avec une taille variable de z (en bits) (nombre entier de 64 bits au maximum)
rol(x y z) rotationx gauche y bits avec une taille variable dez ( en bits)(entier de 64 bits au maximum)
| 1. | variables |
| 2. | expressions entre parenthèses correspondantes |
| 3. | fonctions listées dans Fonctions trigonométriques et transcendantes |
| 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 se fait de gauche à droite.
Par exemple,3 + 4 * 2 sera interprété comme 3 + 8, et non comme 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 des nombres jusqu'à 30 000 chiffres ; il est très peu probable que vous ayez besoin d'une plus grande précision ! Quelques fonctions (gcd, lcm, ror, rol) utilisent des entiers de 64 bits.
Précision d'affichage et format de sortie
La précision d'affichage maximale est de 15 000 chiffres à gauche de la virgule et de 15 000 chiffres à droite. Vous pouvez modifier la précision décimale par défaut avec la commande OPTION, les options de configuration @EVAL Precision et la commande SETDOS /F . Vous pouvez modifier le séparateur décimal avec l' option de configuration du caractère décimal ou la commande SETDOS /G.
Vous pouvez modifier le format d'affichage de l'instance courante de @EVAL en spécifiant displayformat.
Format d'affichage de la notation scientifique
Si displayformat est E, la sortie se fera en notation scientifique. Par exemple, vous pouvez combiner =E avec un format d'affichage E :
echo %@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
Si le format d'affichage est la lettre H, la sortie sera hexadécimale. Si le format d'affichageest X, lasortie sera hexadécimale avec un 0xen tête .
Format d'affichage binaire
Si le format d'affichage est la lettre B, la sortie sera binaire.
Format d'affichage octal
Si le format d'affichage est la lettre O, la sortie sera octale.
Précision explicite
Si le format d'affichage est i.a, alors :
•i doit être un nombre qui spécifie la précision décimale minimale (le nombre minimal 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 s'il s'agit de votre séparateur décimal.
Vous pouvez spécifier l'un ou l'autre des paramètres i et a, ou les deux . Si i >a, ou si seul i est spécifié, i est utilisé à la fois comme précision minimale et maximale, par exemple=2 et =2.1 sont équivalents à=2.2.
Si le dernier caractère du format d'affichage est +, @EVAL fait précéder les nombres positifs d'un+.
Expression |
Value |
@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 : @DEC et @INC.