[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