La funzione per l'intero più vicino in Python
Forse a testimonianza della sua reputazione di linguaggio potente e flessibile, Python include molte librerie interne per automatizzare attività computazionali e matematiche comuni o complesse. La "libreria math" contiene molti metodi per arrotondamenti tipici. Tuttavia, l'arrotondamento dei decimali in Python non arrotonda a un intero, ma a un decimale intero. La conversione a interi richiede l'uso della libreria math di Python insieme ad alcune librerie di conversione integrate.
Python e arrotondamento
La libreria math di Python offre un pacchetto di metodi utili per arrotondare numeri decimali a numeri interi. Puoi arrotondare un numero nel modo tradizionale (per difetto se la parte frazionaria è ≤0,4, per eccesso se ≥0,5) usando il metodo "round()". L'esempio seguente mostra come arrotondare numeri decimali con il metodo round:
round(3.14159) # restituisce 3 round(2.71828) # restituisce 3
Metodi floor e ceil
Come parte della libreria math, i metodi "floor()" e "ceil()" forniscono un modo unico per arrotondare i decimali, utile in certi calcoli. Il metodo floor arrotonda per difetto all'intero più vicino verso meno infinito (indipendentemente dal valore decimale), mentre ceil arrotonda per eccesso verso più infinito. Esempio:
import math math.floor(3.9) # 3 math.ceil(3.1) # 4
Arrotondamento e interi
Le operazioni di arrotondamento illustrate mostrano come funzionano queste funzioni, ma anche un effetto collaterale: nelle versioni di Python precedenti alla 3.0, i decimali arrotondati non diventano interi, ma rimangono decimali. A causa della rappresentazione dei decimali nell'architettura dei computer, questo potrebbe causare problemi in calcoli ad alta precisione dove servono interi. Puoi convertire un numero floating-point in intero usando il metodo "int()", ad esempio:
int(math.floor(3.9)) # 3 int(math.ceil(3.1)) # 4
Metodo di esempio
Usando queste conoscenze, puoi sviluppare un metodo per arrotondare decimali a interi facilmente. Gli esempi seguenti mostrano brevi metodi che determinano floor e ceil di un numero come intero, e un altro che arrotonda a un numero di decimali specificato dall'utente (o a un intero):
def round_to_int(x):
return int(round(x))
def floor_int(x):
return int(math.floor(x))
def ceil_int(x):
return int(math.ceil(x))