Il y a quatre types numériques: les entiers, les entiers longs,
les nombres flottants ou réels, et les nombres complexes.
Les entiers sont implémentés avec le type long du langage C, qui assure
au moins 32 bits de précision. Les entiers longs ont une précision illimitée.
Les nombres flottants sont implémentés avec le type double du C.
Toute supposition sur leur précision est hasardeuse, il faut se reporter
aux caractéristiques de votre machine.
Les nombres complexes ont une partie imaginaire et une partie réelle, toutes
les deux sont implémentées avec le type double du C. Pour extraire
ces parties d'un nombre complexe z, il faut employer Les nombres sont créés lors de l'utilisation de valeurs numériques
littérales ou bien comme résultat de fonctions ou d'opérateurs
intégrés. Les valeurs littérales sans suffixe, y compris les nombres en hexadécimal et octal, donnent des entiers.
Les valeurs littérales dotées d'un caractère suffixe "L" ou
"l" donnent des entiers longs (il faut privilégier la notation
avec "L" car "1l" est trop proche de onze !). Les valeurs
numériques littérales contenant un point ou un signe d'exposant donnent
des flottants. Enfin, les valeurs littérales dotées d'un caractère
suffixe "J" ou "j" donnent des nombres complexes.
Python permet l'arithmétique sur des types numériques différents.
Lorsqu'un opérateur numérique agit sur des opérandes de types
différents, l'opérande avec le type le plus restrictif est traduit en
type de l'autre opérande. L'entier est plus restrictif que l'entier
long qui est plus restrictif que le flottant qui est plus restrictif
que le nombre complexe. Il faut appliquer la même règle aux
comparaisons entre types numériques différents.1Les fonctions int(), long(), float(),
et complex() sont utilisées pour contraindre la traduction d'un
nombre en un type numérique donné.
Les opérations suivantes sont applicables à tous les types numériques.
Elles sont ordonnées par priorité croissante (même priorité dans
une même case; toutes les opérations numériques ont une priorité
supérieure aux opérations de comparaison).
z.real et z.imag.
| Opération | Résultat | Notes |
|---|---|---|
x + y | somme de x et y | |
x - y | différence de x et y | |
x * y | produit de x et y | |
x / y | quotient de x et y | (1) |
x % y | reste de x / y | |
-x | x négatif | |
+x | x inchangé | |
abs(x) | valeur absolue ou magnitude de x | |
int(x) | conversion de x en entier | (2) |
long(x) | conversion de x en entier long | (2) |
float(x) | conversion de x en flottant | |
complex(re,im) | nombre complexe avec re en partie réelle et im en partie imaginaire. im vaut zéro par défaut. | |
c.conjugate() | valeur conjuguée du nombre complexe c | |
divmod(x, y) | la paire (x / y, x % y) | (3) |
pow(x, y) | élévation de x à la puissance y | |
x ** y | élévation de x à la puissance y |
Notes:
1/2 donne 0, (-1)/2 donne -1,
1/(-2) donne -1, (-1)/(-2) donne 0.
Il faut remarquer que le résultat est un entier long si un des deux opérandes
est un entier long.
[1, 2] est considérée égale à [1.0, 2.0].
Le comportement est identique pour les tuples.