[ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Le Emacs Lisp fournit les quatre opérations arithmétiques traditionnelles: addition, soustraction, multiplication et division. Les fonctions de reste et de modulo complètent les fonctions de division. Les fonctions additionner ou soustraire 1 sont fournis parce qu'elles sont traditionnelles en Lisp et utilisées généralement.
Toutes ces fonctions, à part %
, retourne une valeur à virgule
flottante si au moins un argument est une valeur à virgule flottante.
Il est important de noter qu'en Emacs Lisp, les fonctions
arithmétiques ne vérifient pas le débordement. Ainsi (1+
268435455)
peut être évaluer à -268435456, selon votre
matériel.
Cette fonction renvoie number-or-marker plus 1. Par exemple,
(setq foo 4) ⇒ 4 (1+ foo) ⇒ 5 |
Cette fonction n'est pas analogue à l'opérateur C ++
—elle
n'incrémente pas une variable—. Elle calcule juste la somme. Ainsi,
si nous continuons,
foo ⇒ 4 |
Si vous voulez incrémenter la variable, vous devez employer
setq
, comme ceci:
(setq foo (1+ foo)) ⇒ 5 |
Cette fonction renvoie number-or-marker moins 1.
Cette fonction fait la somme de ses arguments. Si aucun argument n'est
donné, +
retourne 0.
(+) ⇒ 0 (+ 1) ⇒ 1 (+ 1 2 3 4) ⇒ 10 |
La fonction -
atteint deux objectifs: négation et soustraction.
Quand -
a un argument simple, la valeur est le négatif de
l'argument. Quand il y a des arguments multiples, -
soustrait
chacun des more-numbers-or-markers de number-or-marker, de
manière cumulée. S'il n'y a aucun argument, le résultat est 0.
(- 10 1 2 3 4) ⇒ 0 (- 10) ⇒ -10 (-) ⇒ 0 |
Cette fonction multiplie ses arguments entre elles, et renvoie le
produit. Si aucun argument n'est donné, *
retourne 1.
(*) ⇒ 1 (* 1) ⇒ 1 (* 1 2 3 4) ⇒ 24 |
Cette fonction divise dividend par divisor et retourne le quotient. S'il y a des arguments additionnels divisors, il divise dividend par chaque diviseur alternativement. Chaque argument peut être un nombre ou un marqueur.
Si tous les arguments sont des nombres entiers, alors le résultat est
aussi un nombre entier. Ceci signifie que le résultat doit être
arrondi. Sur la plupart des machines, le résultat est arrondi vers le
zéro après chaque division, mais quelques machines peuvent arrondir
différemment les arguments négatifs. C'est parce que la fonction de
Lisp /
est implémentée en utilisant l'opérateur de division de
C qui permet l'arrondi en fonction de la machine. Du côté pratique,
toutes les machines connues arrondissent en mode standard.
Si vous divisez un nombre entier par 0, une erreur arith-error
est signalée. (Voir la section Errors.) La division d'un nombre à virgule
flottante par zéro renvoie l'un ou l'autre infini ou NaN si votre
machine supporte les nombres à virgule flottante IEEE;
autrement, elle signale une erreur arith-error
.
(/ 6 2)
⇒ 3
(/ 5 2)
⇒ 2
(/ 5.0 2)
⇒ 2.5
(/ 5 2.0)
⇒ 2.5
(/ 5.0 2.0)
⇒ 2.5
(/ 25 3 2)
⇒ 4
(/ -17 6)
⇒ -2 (pourrait être -3 sur certaines machines)
|
Cette fonction renvoie le reste en nombre entier après la division de dividend par divisor. Les arguments doivent être des nombres entiers ou des marqueurs.
Pour des arguments négatifs, le reste est en principe dépendant de la machine puisque le quotient est variable; mais dans la pratique, toutes les machines connues se comportent de la même façon.
Un arith-error
est généré quand divisor est 0.
(% 9 4) ⇒ 1 (% -9 4) ⇒ -1 (% 9 -4) ⇒ 1 (% -9 -4) ⇒ -1 |
Pour deux nombres entiers quelconques dividend et divisor,
(+ (% dividend divisor) (* (/ dividend divisor) divisor)) |
est toujours égale à dividend.
Cette fonction renvoie la valeur de dividend modulo divisor; en d'autres termes, le reste après la division de dividend par divisor, mais avec le même signe que divisor. Les arguments doivent être des nombres ou des marqueurs.
À la différence de %
, mod
renvoie un résultat bien
défini pour les arguments négatifs. Il permet également des arguments
à virgule flottante; il arrondit le quotient à un nombre entier vers
le bas (vers moins l'infini), et utilise ce quotient pour calculer le
reste.
Un arith-error
est généré quand divisor est 0.
(mod 9 4) ⇒ 1 (mod -9 4) ⇒ 3 (mod 9 -4) ⇒ -3 (mod -9 -4) ⇒ -1 (mod 5.5 2.5) ⇒ .5 |
Pour deux nombres quelconques dividend et divisor,
(+ (mod dividend divisor) (* (floor dividend divisor) divisor)) |
est toujours égale à dividend, sauf si l'un ou l'autre
argument est un nombre à virgule flottante, une erreur sera
générée. Pour floor
, voir les Conversions numériques.
[ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Top] | [Table des matières] | [Index] | [ ? ] |
Ce document a été généré par Eric Reinbold le 13 Octobre 2007 en utilisant texi2html 1.78.