Come arrotondare un numero in Python (funzione round() e decimale)
Scopri come arrotondare i numeri in virgola mobile in Python. Comprendere l'arrotondamento di Banker, la precisione decimale personalizzata e la formattazione in virgola mobile per la visualizzazione.
Panoramica
L'aritmetica in virgola mobile nei computer a volte può portare a problemi di precisione imprevisti a causa del modo in cui i sistemi binari memorizzano i decimali (ad esempio, `0.1 + 0.2` che restituisce `0.30000000000000004`). Quando si restituiscono numeri agli utenti o si preparano parametri, l'arrotondamento dei numeri è un requisito comune. Python offre diversi modi per raggiungere questo obiettivo.
Lo strumento principale è la funzione integrata `round(number, ndigits)`. Richiede un numero e un conteggio di precisione opzionale. Se "ndigits" viene omesso, viene arrotondato al numero intero più vicino. Se viene fornito "ndigits", l'arrotondamento avviene a quel numero di cifre decimali.
Una proprietà chiave della funzione `round()` di Python è che utilizza l'"arrotondamento del banchiere" (arrotonda da metà a pari). Quando un numero è esattamente a metà tra due numeri interi (ad esempio, `2.5` o `3.5`), Python arrotonda al numero *pari* più vicino. Ciò significa che "round(2.5)" è "2" e "round(3.5)" è "4". Anche se matematicamente corretto su set di dati di grandi dimensioni per evitare distorsioni al rialzo, per calcoli finanziari precisi dovresti utilizzare gli strumenti di quantizzazione del modulo "decimale".
Codice e output di esecuzione
Questo script dimostra l'arrotondamento dei valori mobili utilizzando la funzione di arrotondamento incorporata, gli esempi di arrotondamento di Banker e il modulo decimale.
from decimal import Decimal, ROUND_HALF_UP
val = 3.14159
# 1. Round to nearest integer
print("Nearest Integer:", round(val))
# 2. Round to 2 decimal places
print("Two decimals:", round(val, 2))
# 3. Banker's Rounding demonstration (rounds to nearest even)
print("round(2.5):", round(2.5)) # Nearest even is 2
print("round(3.5):", round(3.5)) # Nearest even is 4
# 4. Math rounding up (Traditional rounding) using decimal module
amount = Decimal("2.5")
rounded_up = amount.quantize(Decimal("1"), rounding=ROUND_HALF_UP)
print("Decimal ROUND_HALF_UP (2.5):", rounded_up)Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3Implementazione passo dopo passo
- Chiama la funzione incorporata round(number) per arrotondare un float all'intero più vicino.
- Passare un secondo argomento (ad esempio, round(num, 2)) per specificare il numero di cifre decimali da mantenere.
- Utilizzare il modulo decimale con ROUND_HALF_UP per calcoli rigorosi di arrotondamento finanziario.
Domande frequenti
Perché round(2.5) restituisce 2 anziché 3 in Python?
Python utilizza l'arrotondamento di Banker, che arrotonda la metà dei numeri all'intero pari più vicino. Ciò riduce la distorsione statistica (l'arrotondamento per eccesso della metà dei numeri provoca sempre una leggera deriva verso l'alto su set di dati di grandi dimensioni).
Come arrotondare un numero sempre per eccesso o sempre per difetto?
Importa il modulo matematico e utilizza math.ceil(x) per arrotondare al numero intero successivo o math.floor(x) per arrotondare al numero intero precedente.
Argomenti correlati
Impara le migliori tecniche di formattazione delle stringhe in Python. Confronta le moderne stringhe f, format() e la formattazione percentuale con esempi di codice.
Come convertire String in Int in PythonScopri come convertire una stringa in un numero intero in Python utilizzando la funzione int(). Gestisci gli errori in modo sicuro e converti i numeri da binario, ottale o esadecimale.
Risorse Python consigliate
Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.
Spiegazione delle variabili Python e dei tipi di dati
Comprendere le variabili Python e i tipi di dati principali (stringhe, numeri interi, float, booleani). Una guida completa per principianti all'assegnazione della memoria in Python.
Foglio informativo sui metodi del dizionario Python
Impara i metodi del dizionario Python. Guida di riferimento completa per inserimenti, recuperi, aggiornamenti e controlli di coppie chiave-valore.
Python vs JavaScript: quale linguaggio di programmazione è il migliore?
Un confronto completo tra Python e JavaScript. Esplora le differenze di sintassi, le prestazioni, i casi d'uso (backend e frontend) ed esempi di codifica.