Integer division in Python 2 and Python 3

Question:

How can I divide two numbers in Python 2.7 and get the result with decimals?

I don’t get it why there is difference:

in Python 3:

``````>>> 20/15
1.3333333333333333
``````

in Python 2:

``````>>> 20/15
1
``````

Isn’t this a modulo actually?

In Python 3, `/` is float division

In Python 2, `/` is integer division (assuming `int` inputs)

In both 2 and 3, `//` is integer division

(To get float division in Python 2 requires either of the operands be a float, either as `20.` or `float(20)`)

In Python 2.x, make sure to have at least one operand of your division in `float`. Multiple ways you may achieve this as the following examples:

``````20. / 15
20 / float(15)
``````

In Python 2.7, the `/` operator is integer division if inputs are integers.

If you want float division (which is something I always prefer), just use this special import:

``````from __future__ import division
``````

See it here:

``````>>> 7 / 2
3
>>> from __future__ import division
>>> 7 / 2
3.5
>>>
``````

Integer division is achieved by using `//`, and modulo by using `%`:

``````>>> 7 % 2
1
>>> 7 // 2
3
>>>
``````

As commented by `user2357112`, this import has to be done before any other normal import.

"/" is integer division in Python 2, so it is going to round to a whole number. If you would like a decimal returned, just change the type of one of the inputs to float:

`float(20)/15 #1.33333333`

Categories: questions
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.