[Python] Richiesta chiarimento per calcoli con numeri decimali
Strap
lab a strap.it
Mar 14 Apr 2015 10:00:33 CEST
Carpediem <i.carpediem <at> tiscali.it> writes:
>
> [...]
> Qualcuno potrebbe avere la gentilezza di spiegarmi questo comportamento?
> e soprattutto, c'è un modo per chiedere un arrotondamento in eccesso per
> la n cifra decimale?
> So che potrei ottenere un numero intero utilizzando per la divisione
> l'operatore // ma sono particolarmente interessato a capire e risolvere
> il problema contemplando l'utilizzo dei numeri in virgola mobile.
> Potete aiutarmi?
> Grazie.
>
Ciao,
Il numero che ottieni con la calcolatrice è approssimato.
Infatti, per il calcolo con i decimali e le currency in genere è preferibile
usare decimal, non i float (e potrei andare off topic raccontandoti degli
aneddoti :-) ).
>>> import decimal
>>> sb = 3287628061
>>> decimal.Decimal(sb)
>>> decimal.Decimal(sb) / decimal.Decimal(60)
Decimal('54793801.01666666666666666667')
Come puoi notare il valore che ottieni è diverso da quello della calcolatrice.
Avendo un decimal ora ottieni 1 se nelle tue conversioni converti tutto in int.
>>> (mb - m1) * 60
Decimal('1.00000000000000000020')
>>> int((mb - m1) * 60)
1
Nella documentazione trovi la spiegazione, ci sono pure degli esempi di
arrotondamento con la funzione round
https://docs.python.org/2/tutorial/floatingpoint.html
Sani.
Strap
Maggiori informazioni sulla lista
Python