Decimali Python.
-
12-11-2019 - |
Domanda
Mi aspetto che 0.5
arrotondarsi fino a 1
.Qualcuno può spiegare perché gira invece a 0
?
>>> from decimal import *
>>> getcontext().prec = 0
>>> +Decimal(0.5)
Decimal('0')
. Soluzione
Hai chiesto a zero cifre significative di precisione.Se non si consente di memorizzare le cifre, tutti i numeri saranno zero.
Si noti che la precisione è il numero di cifre decimali significative , cioè non contando gli zeri principali.0.5
ha una singola cifra significativa, 1.5
ha due.Si noti inoltre che Decimal
utilizza arrotondazione del banker .
Altri suggerimenti
Stai impostando la precisione su 0, prova a impostarlo su 1 o 2 invece.
Non sono sicuro di cosa sia il caso dell'uso, ma perché non solo fare:
round(0.5)
. Convertirei solo in un int se vuoi un intero.
int(Decimal(0.5))
.
Potresti anche assicurarti di avere la giusta impostazione di arrotondamento.
getcontext().prec = 0
getcontext().rounding = ROUND_HALF_UP
. Nel tuo:
getcontext.prec()=0
.
Linea, stai chiedendo 0 luoghi decimali - tutti i decimali torneranno 0 in questo modo.Prova:
getcontext.prec()=1
.
o un altro numero per impostare la quantità di punti decimali.
Buona fortuna.