Python Funzione round() con ESEMPI
โก Riepilogo intelligente
Python round() รจ una funzione integrata che restituisce un valore in virgola mobile o intero arrotondato a un numero specificato di cifre decimali, utilizzando l'arrotondamento bancario per risolvere i casi di paritร , arrotondando per eccesso alla cifra pari piรน vicina.

Che cos'รจ la funzione round() in Python?
Python round() รจ una funzione integrata disponibile con PythonRestituirร un numero decimale arrotondato al numero di cifre decimali specificato in input.
Se non vengono specificate le cifre decimali da arrotondare, il valore viene considerato pari a 0 e l'arrotondamento avviene all'intero piรน vicino.
Sintassi
round(float_num, num_of_decimals)
Scheda Sintetica
- numero_float: Il numero decimale da arrotondare.
- numero_di_decimali: (facoltativo) Il numero di cifre decimali da considerare durante l'arrotondamento. ร facoltativo e, se non specificato, il valore predefinito รจ 0 e l'arrotondamento viene eseguito all'intero piรน vicino.
Descrizione
Il metodo round() accetta due argomenti:
- il numero da arrotondare e
- le cifre decimali da considerare durante l'arrotondamento.
Il secondo argomento รจ facoltativo e, se non specificato, assume valore predefinito 0; in tal caso, verrร arrotondato all'intero piรน vicino e il tipo di ritorno sarร anch'esso un intero.
Quando sono presenti le cifre decimali, ovvero il secondo argomento, verrร arrotondato al numero di cifre indicato. Il tipo restituito sarร float.
Se il numero dopo la virgola indicato รจ:
- Se il valore รจ maggiore o uguale a 5, al valore finale verrร aggiunto +1.
- Se < 5, il valore finale verrร restituito cosรฌ com'รจ, fino alle cifre decimali indicate.
Valore di ritorno
Restituirร un valore intero se il parametro num_of_decimals non รจ specificato e un valore decimale se il parametro num_of_decimals รจ specificato. Si noti che il valore verrร arrotondato a +1 se la cifra dopo la virgola รจ maggiore o uguale a 5, altrimenti restituirร il valore cosรฌ com'รจ, fino al numero di cifre decimali specificato.
Quanto impatto puรฒ avere l'arrotondamento? (Arrotondamento vs troncamento)
Il miglior esempio per mostrare l'impatto dell'arrotondamento รจ il mercato azionario. In passato, cioรจ nell'anno 1982, il Borsa di Vancouver (VSE) utilizzato per troncare i valori azionari a tre cifre decimali per ogni transazione.
Questa operazione veniva eseguita quasi 3000 volte al giorno. L'accumulo di troncamenti ha comportato una perdita di circa 25 punti al mese.
Di seguito รจ riportato un esempio di troncamento dei valori rispetto all'arrotondamento.
Considera i numeri in virgola mobile generati di seguito come valori azionari. Al momento, li sto generando per un intervallo di 1,000,000 di secondi tra 0.01 e 0.05.
Esempi:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Per mostrare l'impatto dell'arrotondamento, ho scritto un piccolo frammento di codice in cui, inizialmente, si utilizzano i numeri fino a sole 3 cifre decimali, ovvero si tronca il numero dopo 3 cifre decimali.
Dispongo del valore totale originale, del totale risultante dai valori troncati e della differenza tra il valore originale e quello troncato.
Sullo stesso insieme di numeri, ho utilizzato il metodo round() fino a 3 cifre decimali e ho calcolato la somma e la differenza tra il valore originale e il valore arrotondato.
Ecco l'esempio e il risultato.
esempio 1
import random def truncate(num): return int(num * 1000) / 1000 arr = [random.uniform(0.01, 0.05) for _ in range(1000000)] sum_num = 0 sum_truncate = 0 for i in arr: sum_num = sum_num + i sum_truncate = truncate(sum_truncate + i) print("Testing by using truncating upto 3 decimal places") print("The original sum is = ", sum_num) print("The total using truncate = ", sum_truncate) print("The difference from original - truncate = ", sum_num - sum_truncate) print("\n\n") print("Testing by using round() upto 3 decimal places") sum_num1 = 0 sum_truncate1 = 0 for i in arr: sum_num1 = sum_num1 + i sum_truncate1 = round(sum_truncate1 + i, 3) print("The original sum is =", sum_num1) print("The total using round = ", sum_truncate1) print("The difference from original - round =", sum_num1 - sum_truncate1)
Produzione:
Testing by using truncating upto 3 decimal places The original sum is = 29985.958619386867 The total using truncate = 29486.057 The difference from original - truncate = 499.9016193868665 Testing by using round() up to 3 decimal places The original sum is = 29985.958619386867 The total using round = 29985.912 The difference from original - round = 0.04661938686695066
La differenza tra il valore originale e quello troncato รจ 499.9016193868665, e da round(), รจ 0.04661938686695066.
La differenza sembra essere molto grande, e l'esempio mostra come il metodo round() aiuti a calcolare con una precisione vicina a quella reale.
Esempio: arrotondamento mobile Numbers
In questo programma vedremo come funziona l'arrotondamento per i numeri in virgola mobile.
# testing round() float_num1 = 10.60 # here the value will be rounded to 11 as after the decimal point the number is 6 that is >5 float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5 float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5 float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5 print("The rounded value without num_of_decimals is :", round(float_num1)) print("The rounded value without num_of_decimals is :", round(float_num2)) print("The rounded value with num_of_decimals as 2 is :", round(float_num3, 2)) print("The rounded value with num_of_decimals as 2 is :", round(float_num4, 2))
Produzione:
The rounded value without num_of_decimals is : 11 The rounded value without num_of_decimals is : 10 The rounded value with num_of_decimals as 2 is : 10.35 The rounded value with num_of_decimals as 2 is : 10.34
Esempio: arrotondamento di valori interi
Se ti capita di usare round() su un valore intero, ti restituirร semplicemente il numero senza alcuna modifica.
# testing round() on a integer num = 15 print("The output is", round(num))
Produzione:
The output is 15
Esempio: arrotondamento al negativo Numbers
Vediamo alcuni esempi di come funziona l'arrotondamento per i numeri negativi.
# testing round() num = -2.8 num1 = -1.5 print("The value after rounding is", round(num)) print("The value after rounding is", round(num1))
Produzione:
C:\pythontest>python testround.py The value after rounding is -3 The value after rounding is -2
Esempio: Arrotondare gli array NumPy
Come si arrotonda NumPy? matrici in Python?
Per risolvere questo problema, possiamo utilizzare il modulo NumPy e il metodo numpy.round() o numpy.around(), come mostrato nell'esempio seguente.
Usando numpy.round()
# testing round() import numpy as np arr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323] arr1 = np.round(arr, 2) print(arr1)
Produzione:
C:\pythontest>python testround.py [-0.34 1.46 4.23 -0.34 7.63 5.12]
Possiamo anche usare numpy.around(), che fornisce lo stesso risultato di numpy.round() mostrato sopra.
Esempio: modulo decimale
Oltre alla funzione round(), Python Dispone di un modulo decimale che aiuta a gestire i numeri decimali con maggiore precisione.
Il modulo Decimale offre diverse opzioni di arrotondamento, come mostrato di seguito:
- SOFFITTO ROTONDO: tenderร all'infinito.
- ARROTONDA PER DIFETTO: arrotonderร il valore verso zero.
- PAVIMENTO ROTONDO: si arrotonderร verso -Infinito.
- ROTONDO_MEZZO_DI_SOTTO: Verrร arrotondato al valore piรน vicino tendente allo zero.
- ROUND_SELF_EVEN: Verrร arrotondato al valore piรน vicino, partendo dall'intero pari piรน vicino.
- ARROTONDARE_MEZZO_PER_ALTO: Verrร arrotondato al valore piรน vicino, allontanandosi dallo zero.
- RIEPILOGO: arrotonderร dove il valore si discosterร da zero.
In decimale, il metodo quantize() aiuta ad arrotondare a un numero fisso di cifre decimali ed รจ possibile specificare l'arrotondamento da utilizzare, come mostrato nell'esempio seguente.
Esempio: Utilizzando round() e metodi decimali
import decimal round_num = 15.456 final_val = round(round_num, 2) #Using decimal module final_val1 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_CEILING) final_val2 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_DOWN) final_val3 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_FLOOR) final_val4 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_DOWN) final_val5 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_EVEN) final_val6 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP) final_val7 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP) print("Using round()", final_val) print("Using Decimal - ROUND_CEILING ",final_val1) print("Using Decimal - ROUND_DOWN ",final_val2) print("Using Decimal - ROUND_FLOOR ",final_val3) print("Using Decimal - ROUND_HALF_DOWN ",final_val4) print("Using Decimal - ROUND_HALF_EVEN ",final_val5) print("Using Decimal - ROUND_HALF_UP ",final_val6) print("Using Decimal - ROUND_UP ",final_val7)
Produzione:
Using round() 15.46 Using Decimal - ROUND_CEILING 15.46 Using Decimal - ROUND_DOWN 15.45 Using Decimal - ROUND_FLOOR 15.45 Using Decimal - ROUND_HALF_DOWN 15.46 Using Decimal - ROUND_HALF_EVEN 15.46 Using Decimal - ROUND_HALF_UP 15.46 Using Decimal - ROUND_UP 15.46
