[Python] Richiesta chiarimento per calcoli con numeri decimali

Giuseppe Amato giuamato a gmail.com
Mar 14 Apr 2015 10:23:54 CEST


Il giorno 14 aprile 2015 01:26, Carpediem <i.carpediem a tiscali.it> ha
scritto:

> A questo punto, quindi, se chiedo di stampare s invece che ritrovarmi il
> valore 1 ottengo 0
>

Beh il punto è che stai chiedendo una cosa e ne vuoi un'altra.

>>> sb = 3287628061
>>> type(sb)
<type 'long'>
>>> mb = sb / 60
>>> type(mb)
<type 'long'>
>>> mb
54793801L
>>> m1 = int(mb)
>>> type(m1)
<type 'int'>
>>> m1
54793801
>>> s = int ((mb-m1)*60)
>>> type(s)
<type 'int'>
>>> s
0

Nel codice che hai scritto i decimali non sono presi in considerazione,
perché stai facendo operazioni su interi.
Inoltre, la funzione int() non arrotonda ma converte, ciò vuol dire che 0.1
o 0.99 o 0.11111111111111112344 daranno lo stesso risultato: 0, che è la
parte intera del numero.
Non si tratta di un problema di virgola mobile, ma un problema di funzione,
come già ti dicevano usa round().

Ciao

-- 
____________________________
Giuseppe Amato
e-mail: giuamato a gmail.com
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150414/f756ad71/attachment-0001.html>


Maggiori informazioni sulla lista Python