2.3.4 Tipi numerici

Esistono quattro tipi numerici distinti; interi semplici, interi long, numeri in virgola mobile e numeri complessi. In aggiunta, i Booleani vengono considerati un sotto tipo di interi semplici. Gli interi semplici (chiamati anche solo interi, interi) vengono implementati usando long in C, che dà loro come minimo 32 bit di precisione. Gli interi long hanno una precisione illimitata. I numeri in virgola mobile vengono implementati usando double in C. Tutti i puntatori alla loro precisione vengono disattivati fino a che non è nota la macchina su cui si sta lavorando.

I numeri complessi hanno una parte reale ed una parte immaginaria, implementate usando double in C. Per estrarre queste parti da un numero complesso z, si usa z.real e z.imag.

I numeri vengono creati da costanti numeriche o come il risultato di funzioni ed operatori built-in. Costanti numeriche intere semplici (inclusi numeri esadecimali e ottali) restituiscono interi semplici fino a che il valore che denotano è troppo grande per essere rappresentato come tale, in quel caso viene restituito un intero long. Le costanti numeriche intere con il suffisso "L" o "l" restituiscono interi long ("L" viene preferito perché "1l"sembra troppo simile al numero undici!). Le costanti numeriche contenenti un punto decimale o un segno esponenziale restituiscono numeri in virgola mobile. L'aggiunta di "j" o "J" ad una costatnte numerica restituisce un numero complesso con la parte reale uguale a zero. Una costante numerica complessa è la somma di una parte reale ed una parte immaginaria.

Python supporta pienamente gli aritmetici misti: quando un operatore binario aritmetico ha operandi di differente tipo numerico, l'operando con il tipo ``narrower'' (NdT:stretto) viene allargato a quello dell'altro, dove l'intero semplice è più stretto di quello intero long, a sua volta più stretto di quello in virgola mobile, a sua volta ancora più stretto di quello complesso. Il confronto tra numeri di tipi misti usa le stesse regole. 2.6I costruttori int(), long(), float() e complex() possono essere usati per produrre numeri di un tipo specifico.

Tutti i tipi numerici (eccetto i complessi) supportano le seguenti operazioni, ricapitolate per priorità ascendente (le operazioni nello stesso box hanno la stessa priorità; tutte le operazioni numeriche hanno una priorità più alta rispetto a quelle di confronto):

Operazione  Risultato  Note 
x + y somma di x e y  
x - y sottrazione di y a x  
x * y moltiplicazione di x per y  
x / y quoziente di x per y (1)
x % y resto di x / y (4)
-x x negativizzato  
+x x immutato  
abs(x) valore assoluto della magnitudo di x  
int(x) x conversione in intero (2)
long(x) x conversione in intero long (2)
float(x) x conversione in virgola mobile  
complex(re,im) un numero complesso con una parte reale re ed una parte immaginaria im. Il valore predefinito di im è zero.  
c.conjugate() coniugazione del numero complesso c  
divmod(x, y) la coppia (x / y, x % y) (3)(4)
pow(x, y) x elevato alla potenza y  
x ** y x elevato alla potenza y  

Note:

(1)
Per divisioni di interi (semplici o long) il risultato è un intero. Il risultato viene sempre arrotondato all'intero inferiore: 1/2 è 0, (-1)/2 è -1, 1/(-2) è -1 e (-1)/(-2) è 0. Notate che il risultato è un intero long se ogni operando è un intero long, senza riguardo per il valore numerico.

(2)
La conversione da un numero in virgola mobile in un intero (long o semplice) può arrotondare o troncare come in C; vedete le funzioni floor() e ceil() nel modulo math per conversioni meglio definite.

(3)
Vedete la sezione 2.1, ``Funzioni built-in'' per una descrizione completa.

(4)
Operatori di base complessi per divisioni, modulo operator e divmod().

Deprecato dalla versione 2.3 di Python. Convertite invece in virgola mobile usando abs(), se appropriato.



Footnotes

... regole.2.6
Di conseguenza, la lista [1, 2] viene considerata uguale a [1.0, 2.0] e similmente per le tuple.



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.