<div dir="ltr">Ho trovato utili questi articoli:<br><ul><li><a href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html">http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html</a></li><li><a href="http://www.lahey.com/float.htm">http://www.lahey.com/float.htm</a></li><li><a href="https://docs.python.org/2/tutorial/floatingpoint.html">https://docs.python.org/2/tutorial/floatingpoint.html</a></li><li><a href="http://www.lightbird.net/py-by-example/decimal-module.html">http://www.lightbird.net/py-by-example/decimal-module.html</a></li></ul><p>Nei casi in cui ci si scontra con questi problemi a volte è il caso di usare Decimal invece di float</p><p>Marco<br></p></div><div class="gmail_extra"><br><div class="gmail_quote">Il giorno 14 aprile 2015 09:43, Daniele Varrazzo <span dir="ltr"><<a href="mailto:piro@develer.com" target="_blank">piro@develer.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 2015-04-14 00:26, Carpediem wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Ho un problema su cui sicuramente qualcuno di voi saprà fornirmi una risposta.<br>
Per quel che mi riguarda, ho perso tre giorni prima di scoprire un<br>
comportamento sul modo di contare di python che mi porta a risultati<br>
fuorvianti. Ecco il punto:<br>
sb = <a href="tel:3287628061" value="+393287628061" target="_blank">3287628061</a><br>
mb = sb / 60 # con la calcolatrice ottengo 54793801.<a href="tel:01666667" value="+3901666667" target="_blank">01666667</a><br>
m1 = int(mb) # ottengo 54793801<br>
s = int ((mb-m1)*60 # Con la calcolatrice ottengo 1 ma python<br>
restituisce alla variabile s il valore di 0,9999999403953552 e quindi<br>
0<br>
<br>
A questo punto, quindi, se chiedo di stampare s invece che ritrovarmi<br>
il valore 1 ottengo 0<br>
utilizzando una comune calcolatrice, o quella fornita dallo stesso<br>
windows, ciò che ottengo effettuando <a href="tel:3287628061" value="+393287628061" target="_blank">3287628061</a>/60 è 54793801,<a href="tel:01666667" value="+3901666667" target="_blank">01666667</a><br>
Se invece chiedo a Python di stamparmi il risultato, dopo la virgola<br>
ottengo 01 e una serie di 6 senza che compaia il 7 finale.<br>
Tale differenza, quando chiedo di determinare il valore intero di s,<br>
comporta il mancato raggiungimento del valore di unità (che invece<br>
dovrei ottenere) producendo tutta una serie di conseguenze errate a<br>
catena sui risultati delle operazioni successive.<br>
Qualcuno potrebbe avere la gentilezza di spiegarmi questo comportamento?<br>
e soprattutto, c'è un modo per chiedere un arrotondamento in eccesso<br>
per la n cifra decimale?<br>
</blockquote>
<br></span>
Ci sono corsi universitari interi sul comportamento dei numeri in virgola mobile. In breve: non sono precisi. In meno breve, una rapida googlata ti porta diversi esempi<br>
<br>
<a href="https://www.google.co.uk/webhp?#q=floating+point+number+problems" target="_blank">https://www.google.co.uk/<u></u>webhp?#q=floating+point+<u></u>number+problems</a><br>
<br>
Questo sembra divertente, poi me lo guardo: <a href="http://floating-point-gui.de/" target="_blank">http://floating-point-gui.de/</a><span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
So che potrei ottenere un numero intero utilizzando per la divisione<br>
l'operatore // ma sono particolarmente interessato a capire e<br>
risolvere il problema contemplando l'utilizzo dei numeri in virgola<br>
mobile.<br>
</blockquote>
<br></span>
Usa round() invece di int() per convertire il numero all'intero più vicino.<span class="HOEnZb"><font color="#888888"><br>
<br>
-- Daniele</font></span><div class="HOEnZb"><div class="h5"><br>
______________________________<u></u>_________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/<u></u>mailman/listinfo/python</a><br>
</div></div></blockquote></div><br></div>