[Python] Richiesta chiarimento per calcoli con numeri decimali

Carpediem i.carpediem a tiscali.it
Mar 14 Apr 2015 01:26:46 CEST


Ho un problema su cui sicuramente qualcuno di voi saprà fornirmi una 
risposta.
Per quel che mi riguarda, ho perso tre giorni prima di scoprire un 
comportamento sul modo di contare di python che mi porta a risultati 
fuorvianti. Ecco il punto:
sb = 3287628061
mb = sb / 60 # con la calcolatrice ottengo 54793801.01666667
m1 = int(mb) # ottengo 54793801
s = int ((mb-m1)*60 # Con la calcolatrice ottengo 1 ma python 
restituisce alla variabile s il valore di 0,9999999403953552 e quindi 0

A questo punto, quindi, se chiedo di stampare s invece che ritrovarmi il 
valore 1 ottengo 0
utilizzando una comune calcolatrice, o quella fornita dallo stesso 
windows, ciò che ottengo effettuando 3287628061/60 è 54793801,01666667
Se invece chiedo a Python di stamparmi il risultato, dopo la virgola 
ottengo 01 e una serie di 6 senza che compaia il 7 finale.
Tale differenza, quando chiedo di determinare il valore intero di s, 
comporta il mancato raggiungimento del valore di unità (che invece 
dovrei ottenere) producendo tutta una serie di conseguenze errate a 
catena sui risultati delle operazioni successive.
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.


Maggiori informazioni sulla lista Python