Alexandru Palade wrote:

However, you should be carefully because using an %i modifier for a
what-should-be a float value truncates the value in a way you may not
expect.

What I mean is that if you have sent 2 out of 3 bytes, the math will be
200/3 which with the %i modifier will print 66, rather than 66.6 (or at
least 67 which is closer - have a look at the round() function).

My suggested workaround doesn't use floats. As for rounding, that's more of a usability issue -- seeing the download process getting stuck at 100% can be rather frustrating for the poor user. Better truncate towards zero.

Another thing, you could have just added a dot after the constant in
order to promote the expression to be evaluated as float. As in
   percentage = bytes_transferred / /self/.__sessions[path].total_bytes
* 100.
(notice the last dot)

Did you try that?

>>> 2 / 3 * 100.
0.0

You can fix this with parentheses, but I usually recommend an explicit "cast" instead, to make it obvious what you're doing:

    result = float(a) / b

</F>

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to