Last chance! 50% off DataCamp Premium
Sale ends in
Python, in quanto linguaggio di programmazione particolarmente versatile, offre molte tecniche diverse per arrotondare per eccesso i numeri e per l’arrotondamento in generale. L’arrotondamento per eccesso è una tecnica fondamentale, soprattutto per chi lavora in finanza o in statistica. I metodi seguenti si equivalgono in molti casi pratici, ma ci sono alcune differenze sottili e importanti. In questo articolo ti mostrerò diversi metodi per arrotondare per eccesso i numeri e poi ne discuterò le differenze.
Se aspiri a diventare data analyst o data scientist, ti consiglio vivamente il corso di DataCamp Introduction to Python per partire con il piede giusto nella programmazione in Python. Anche il Python Cheat Sheet for Beginners sarà un utile riferimento.
La funzione math.ceil() del modulo math offre un metodo semplice per arrotondare per eccesso un numero in Python. Questa tecnica garantisce che il numero venga sempre arrotondato all’intero successivo maggiore dell’originale. Il codice seguente stampa 4.
# Import the math module to access math.ceil() function
import math
number = 3.14
rounded_up = math.ceil(number)
print(rounded_up)
Arrotondare per eccesso i numeri significa modificare le cifre per ottenere un valore approssimato. Questo concetto è fondamentale per semplificare i numeri e renderli più facili da gestire. Gli usi comuni dell’arrotondamento per eccesso includono:
È importante ricordare che se arrotondi i numeri prima di eseguire i calcoli, modificherai i risultati e, a volte, le modifiche saranno più significative o sorprendenti di quanto ti aspetti. Poiché l’arrotondamento per eccesso comporta l’adattamento dei numeri a valori approssimati, gli errori si accumulano, specialmente quando si gestiscono grandi dataset. Se arrotondi per eccesso tutti i numeri prima di moltiplicare, il risultato sarà probabilmente più alto rispetto a quello ottenuto usando i numeri originali. Questo perché ogni numero leggermente più grande aumenta il prodotto complessivo.
D’altra parte, se arrotondi per eccesso tutti i numeri prima di eseguire una divisione, l’impatto può essere diverso a seconda che venga arrotondato per eccesso il dividendo o il divisore. In ogni caso, arrotondare per eccesso prima di eseguire operazioni matematiche può influire sui risultati in modi che potrebbero sorprenderti se non fai attenzione.
Python utilizza il modulo math e le librerie NumPy e Pandas per offrire diversi metodi di arrotondamento per eccesso.
La funzione math.ceil() di math si usa per arrotondare per eccesso un numero all’intero più vicino. La sintassi è mostrata di seguito.
# Import the math module to access math.ceil() function
import math
math.ceil(number)
Quando arrotondi per eccesso un numero positivo usando la funzione math.ceil(), l’output restituisce un intero maggiore del numero originale. Il codice seguente stampa 4.
# Import the math module to access math.ceil() function
import math
number = 3.14
rounded_up = math.ceil(number)
print(rounded_up)
Allo stesso modo, quando si arrotondano per eccesso numeri negativi, la funzione math.ceil() restituisce un intero negativo maggiore (cioè meno negativo) del valore originale. Il codice seguente stampa -3.
# Import the math module to access math.ceil() function
import math
number = -3.14
rounded_up = math.ceil(number)
print(rounded_up)
Il modulo decimal in Python è utile per arrotondare numeri floating point a precise posizioni decimali. È importante per ottenere un arrotondamento decimale accurato, soprattutto nei calcoli finanziari.
Puoi usare il modulo decimal per creare oggetti Decimal da stringhe, interi e numeri in virgola mobile. Tuttavia, creare oggetti Decimal usando numeri in virgola mobile non è consigliato a causa di potenziali problemi di precisione. Gli esempi sotto mostrano i diversi metodi per creare oggetti Decimal.
# Import the decimal module to access Decimal function
from decimal import Decimal
d1 = Decimal("3.14159")
print(d1)
# Import the decimal module to access Decimal function
from decimal import Decimal
d3 = Decimal(3.14159)
print(d3)
Il modulo decimal offre i seguenti metodi per arrotondare per eccesso i numeri:
ROUND_UP: Arrotonda sempre allontanandosi da zero.
ROUND_CEILING: Arrotonda sempre verso l’infinito positivo.
Con il modulo decimal, puoi arrotondare i numeri alla precisione desiderata usando il metodo .quantize(). Nell’esempio seguente, è stato utilizzato il metodo ROUND_UP per arrotondare il decimale all’intero più vicino allontanandosi da zero. Puoi ottenere questo risultato indicando 1 nel metodo Decimal per indicare che vuoi arrotondare a un valore intero.
# Import the Decimal class and the ROUND_UP rounding mode from the decimal module
from decimal import Decimal, ROUND_UP
# Create a Decimal object from a string representation of a floating-point number
d = Decimal("-3.14159")
# Round the Decimal object to nearest integer using the ROUND_UP rounding mode
rounded_d_int = d.quantize(Decimal("1"), rounding=ROUND_UP)
print(rounded_d_int) # prints -4
Il metodo ROUND_CEILING del modulo Decimal consente anche di arrotondare per eccesso un numero all’intero superiore.
# Import the Decimal class and the ROUND_CEILING rounding mode from the decimal module
from decimal import Decimal, ROUND_CEILING
# Create a Decimal object from a string representation of a floating-point number
d = Decimal("-3.14159")
# Round the Decimal object to nearest integer using ROUND_CEILING rounding mode
rounded_d_int = d.quantize(Decimal("1"), rounding=ROUND_CEILING)
print(rounded_d_int) # prints -3
NumPy è una libreria potente in Python che aiuta a eseguire operazioni su grandi array e matrici. È essenziale nella data science per la sua efficienza e comodità nei calcoli. Una delle operazioni offerte da NumPy è l’arrotondamento per eccesso. Vediamo il metodo np.ceil(), che può essere usato per arrotondare per eccesso gli elementi di un array all’intero più vicino. La sintassi di np.ceil() è semplice ed è mostrata di seguito.
np.ceil(array)
L’esempio seguente mostra come arrotondare per eccesso gli elementi di un array usando il metodo np.ceil().
# Import the numpy module and alias it as np for convenience
import numpy as np
# Create a numpy array with floating-point numbers
array = np.array([3.14, 2.72, 1.61])
# Apply the ceiling function to each element in the numpy array, rounding each number up to the nearest integer
rounded_up_array = np.ceil(array)
print(rounded_up_array) # 4, 3, 2
Ecco una tabella che confronta diversi metodi per arrotondare per eccesso in Python:
| Metodo | Punti di forza | Debolezze | Miglior caso d’uso |
|---|---|---|---|
math module |
Offre opzioni di arrotondamento specifiche con math.ceil() |
Richiede il modulo math e non è adatto a scenari di arrotondamento complessi. | Calcoli che richiedono arrotondamenti specifici, incluso l’arrotondamento per eccesso. |
decimal module |
Alta precisione e accuratezza | Più complesso da usare | Calcoli finanziari |
| NumPy | Efficace per arrotondare gli array con np.ceil() |
Richiede la libreria NumPy | Analisi dei dati su dataset di grandi dimensioni. |
Il bias di arrotondamento si riferisce alla distorsione dei valori numerici quando si usano metodi di arrotondamento. Di solito si verifica perché l’arrotondamento di un numero lo porta a un valore approssimato maggiore o minore del suo valore originale. Pertanto, il bias di arrotondamento può ridurre precisione e accuratezza, soprattutto nell’analisi statistica e nei calcoli finanziari.
Il metodo rounding half up prevede di arrotondare per eccesso un numero se è esattamente a metà tra due possibili valori. Ad esempio, 2,5 verrà arrotondato a 3. Il vantaggio di questo metodo è che è facile da capire e coerente con quanto più spesso insegnato a scuola. Nel codice seguente creiamo una funzione per verificare se un decimale è esattamente 0,5 e arrotondiamo per eccesso in tal caso; altrimenti arrotondiamo per difetto.
# Create a function to check if a decimal is exactly 0.5 and round up if true
def round_half_up(n):
if n - int(n) == 0.5:
return int(n) + 1
return round(n)
# Example usage
example_number = 2.5
rounded_number = round_half_up(example_number)
print(rounded_number)
Il metodo round half to even, o bankers' rounding, è una tecnica di arrotondamento usata per minimizzare il bias. Quando un numero è esattamente a metà tra due interi, viene arrotondato all’intero pari più vicino. Questo metodo aiuta a bilanciare il processo di arrotondamento evitando un bias costantemente verso l’alto o verso il basso.
Se ometti il secondo argomento, il metodo built-in round arrotonda per default i numeri con il criterio half to even.
# Python round() method to round half to even
print(round(2.5)) # 2
print(round(3.5)) # 4
print(round(-2.5)) # -2
Arrotondare per eccesso i numeri è una tecnica importante in programmazione, perché rende più semplice gestire i valori numerici. È anche essenziale nell’analisi statistica e nei calcoli finanziari, semplificando i valori per migliorarne leggibilità e interpretazione. È importante conoscere i diversi metodi di arrotondamento e scegliere quelli appropriati in base ai requisiti specifici del compito.
Come data analyst, ti incoraggio a esercitarti con i diversi metodi di arrotondamento per eccesso per comprenderne l’applicazione pratica in contesti diversi. Ti consiglio di provare i percorsi di competenze di DataCamp Python Fundamentals e Python Programming per migliorare le tue abilità di programmazione. Infine, il career track Python Developer ti aiuterà a imparare competenze avanzate di Python per distinguerti dagli altri sviluppatori. Infine, se sei curioso di capire come funzionano internamente gli interi in Python, leggi il nostro tutorial sul valore massimo degli interi in Python.
Puoi usare la funzione math.ceil() del modulo math per arrotondare per eccesso all’int più vicino in Python.
Il bias di arrotondamento si verifica quando si hanno valori imprecisi a causa della distorsione dei numeri durante l’arrotondamento.
Il metodo round half to even, o banker’s rounding, prevede di arrotondare un numero esattamente a metà tra due interi all’intero pari più vicino.
Arrotondare un numero significa modificarlo in base al valore della parte frazionaria. Truncare un numero rimuove la parte frazionaria senza arrotondare.
Se vuoi arrotondare per difetto invece che per eccesso in Python, puoi usare la funzione math.floor(). Mentre math.ceil() arrotonda un numero per eccesso all’intero più vicino, math.floor() arrotonda per difetto all’intero più vicino.
Impara Python con DataCamp
Corso
Corso
Programma

blog
Abid Ali Awan
10 min

blog
Abid Ali Awan
15 min
blog
Tim Lu
12 min