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.
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a