Come usare il modulo decimale in Python

Come usare il modulo decimale in Python
Questo articolo coprirà una guida sull'uso del modulo "decimale" in Python. Può essere utilizzato per eseguire varie operazioni matematiche su numeri di punta mobile o numeri contenenti punti decimali. Tutti i campioni di codice in questo articolo sono testati con Python 3.9.5 su Ubuntu 21.04.

Informazioni sul modulo decimale

Il modulo decimale, come suggerisce il nome, può essere utilizzato per gestire i numeri con punti decimali o numeri di tipo galleggiante. I metodi inclusi in questo modulo aiutano a arrotondare i numeri decimali, convertire i numeri ed eseguire calcoli aritmetici. Si concentra anche molto su precisione e precisione e ogni numero dopo un punto decimale è considerato significativo. Il modulo decimale considera un numero come 1.40 come 1.40 e non come 1.4. L'uso del modulo decimale può essere meglio compreso attraverso esempi. Alcuni di loro sono spiegati di seguito.

Esecuzione di calcoli matematici di base usando il modulo decimale

Puoi chiamare il costruttore decimale per convertire un numero in un tipo decimale in Python. Il campione di codice seguente mostra la differenza tra la divisione matematica di base eseguita su numeri di tipo intero e numeri di tipo decimale.

Dal decimale decimale decimale
a = 10
B = 11
c = a / b
D = decimale (a) / decimale (b)
Stampa (c, tipo (c))
Stampa (d, tipo (d))

La prima affermazione importa la classe decimale dal modulo decimale. Successivamente, due variabili "A" e "B" sono create con alcuni valori. La variabile "C" memorizza un valore prodotto dividendo la variabile a per b. Lo stesso processo viene quindi ripetuto convertendo i numeri in oggetti di tipo decimale. Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

0.9090909090909091
0.909090909090909090909090909091

Come puoi vedere nell'output sopra, l'oggetto tipo float mostra numeri con meno precisione rispetto all'oggetto di tipo decimale in quanto utilizza un metodo di approssimazione molto più aggressivo rispetto all'oggetto di tipo decimale. Per impostazione predefinita, un numero di tipo decimale in Python mostra fino a 28 numeri. Puoi modificare questo valore in base alla tua necessità chiamando il metodo "getContext" disponibile nel modulo decimale.

Dal decimale decimale decimale
da decimale import getcontext
getContext ().Prec = 50
a = 10
B = 11
c = a / b
D = decimale (a) / decimale (b)
Stampa (c, tipo (c))
Stampa (d, tipo (d))

Nel campione di codice sopra, la funzione getContext è stata importata e la posizione di precisione è stata impostata su 50 posizioni. Il metodo getContext può essere utilizzato per visualizzare il contesto corrente nel thread e modificare alcuni dei parametri di configurazione predefiniti per il modulo decimale. Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

0.9090909090909091
0.9090909090909090909090909090909090909090909090909090909091

È possibile eseguire qualsiasi tipo di calcolo aritmetico con oggetti di tipo decimale che puoi eseguire con oggetti di tipo galleggiante in Python. Il gran numero di numeri decimali finali negli oggetti di tipo decimale può portare numeri accurati che sono particolarmente utili in applicazioni scientifiche finanziarie, contabili, mission -critical e così via.

Si noti che è possibile creare numeri di tipo decimale da galleggianti, numeri interi e stringhe contenenti numeri chiamando il costruttore decimale principale.

Arrotondando i numeri usando il modulo decimale

Il modulo decimale viene fornito con alcune modalità di arrotondamento predefinite che è possibile utilizzare per arrotondare i numeri con punti decimali. Queste modalità sono chiamate round_floor, round_ceiling, round_half_down, round_half_up, round_up, round_down, round_half_even e round_05up. Secondo la documentazione ufficiale di Python, ecco cosa fanno ciascuna di queste modalità:

  • Round_floor: il numero è arrotondato verso l'infinito negativo.
  • Round_ceiling: il numero è arrotondato verso l'infinito o l'infinito positivo.
  • Round_half_down: i numeri sono arrotondati al numero più vicino. Se c'è un pareggio, il numero è arrotondato verso zero. I legami sono numeri equidistanti che possono essere arrotondati sia su o giù. Ad esempio un numero come 4.25 può essere arrotondato verso entrambi 4.2 e 4.3.
  • Round_half_up: i numeri sono arrotondati al numero più vicino. Se c'è un pareggio, il numero è arrotondato da zero.
  • Round_up: il numero è arrotondato da zero.
  • Round_down: il numero è arrotondato verso zero.
  • Round_half_even: i numeri sono arrotondati al numero più vicino. Eventuali legami sono arrotondati al numero intero anche più vicino.
  • Round_05up: i numeri sono arrotondati da zero se l'ultimo numero è 0 o 5. In caso contrario, i numeri sono arrotondati verso zero.

Il campione di codice seguente mostra il comportamento di queste modalità.

Decimale di importazione
Dal decimale decimale decimale
da decimale import getcontext
getContext ().Prec = 2
getContext ().arrotondamento = decimale.Round_floor
Stampa (decimale (3.961) + decimale (0))
getContext ().arrotondamento = decimale.Round_ceiling
Stampa (decimale (3.961) + decimale (0))
getContext ().arrotondamento = decimale.Round_half_down
Stampa (decimale (3.705) + decimale (0))
getContext ().arrotondamento = decimale.Round_half_up
Stampa (decimale (3.775) + decimale (0))
getContext ().arrotondamento = decimale.ARROTONDARE
Stampa (decimale (3.775) + decimale (0))
getContext ().arrotondamento = decimale.Round_down
Stampa (decimale (3.609) + decimale (0))
getContext ().arrotondamento = decimale.Round_half_even
Stampa (decimale (3.665) + decimale (0))
getContext ().arrotondamento = decimale.Round_05up
Stampa (decimale (3.675) + decimale (0))

Il campione del codice è piuttosto semplice. Una precisione di 2 cifre è impostata per arrotondare i numeri. Il metodo di arrotondamento viene modificato impostando il valore dell'oggetto "arrotondamento" (parte del contesto principale). Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output in cui ogni riga corrisponde alla rispettiva modalità di arrotondamento:

3.9
4.0
3.7
3.8
3.8
3.6
3.7
3.6

Arrotondamento utilizzando il metodo quantizza

È inoltre possibile utilizzare il metodo "Quantize" disponibile nel modulo decimale per completare i numeri. Il processo è identico al metodo spiegato sopra. Tuttavia, invece di impostare i numeri di precisione separatamente, è possibile fornire un esponente come argomento al metodo quantizza per completare un numero in una posizione particolare. Di seguito è riportato un esempio di codice.

Decimale di importazione
Dal decimale decimale decimale
arrotondato = decimale (3.961).Quasize (decimale ('1.0 '), arrotondamento = decimale.Round_floor)
Stampa (arrotondato)

Un esponente di '1.0 'è stato fornito al metodo quantize e un metodo di arrotondamento è stato fornito come argomento extra. Restituirà un numero in x.X formato. Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

3.9

Confrontando due numeri decimali

È possibile confrontare qualsiasi oggetti di tipo decimale utilizzando il metodo "confronta" disponibile nel modulo decimale. Gli esempi seguenti mostrano il suo utilizzo.

Dal decimale decimale decimale
Stampa (decimale (1.2).Confronta (decimale (1.1)))
Stampa (decimale (1.0).Confronta (decimale (1.1)))
Stampa (decimale (1.0).Confronta (decimale (1.0)))

È possibile chiamare il metodo di confronto su un oggetto di tipo decimale e fornire l'altro numero come argomento. Verrà restituito un valore di 0, 1 o -1. Un valore di 0 indica che entrambi i numeri siano uguali, un valore di 1 indica che il primo numero è maggiore del secondo numero e un valore di -1 indica che il primo numero è inferiore al secondo numero. Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

1
-1
0

Conclusione

Sebbene il modulo decimale sia più comunemente usato per controllare la precisione decimale e per arrotondare i numeri dopo il punto decimale, viene fornito con alcuni altri metodi utili che possono essere ulteriormente utilizzati per manipolare i numeri decimali per produrre risultati accurati dai calcoli aritmetici. L'uso di base del modulo decimale è stato trattato in questo articolo e dovrebbe essere sufficiente per la maggior parte delle situazioni. Ma puoi sempre leggere di più sui metodi avanzati dalla documentazione ufficiale di Python.