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.