Thursday, January 19, 2017

Force Python calculation in double




I want to print a double in Python. But it doesn't work, and I don't know why.



My code:



test = 3000 / (1500 * 2000)
print str(test)


I always get a 0 and not a 0.001 even if I do the following:




test = 3000 / (1500 * 2000)
print '%.10f' % test


I get a 0.000000000 and not 0.001.



How do I tell Python that this should be a double?


Answer



In Python 2.x you need to convert at least one of the operands to float, as integer division results in truncated output in Python 2.x:




>>> 3000 / (1500 * 2000)
0
>>> 3000.0 / (1500 * 2000) # Or use float(3000)
0.001
>>> float(3000) / (1500 * 2000)
0.001


Or you can import division of Python 3.x in Python 2.x, where integer division results in true division:




>>> from __future__ import division
>>> 3000.0 / (1500 * 2000)
0.001


Note that this will affect the division in the whole module.


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...