Negative integer division surprising result

division, integer-division, python

Solution

For the actual values, i.e. `8.0/(-7.0)`, the result is roughly `-1.143`.

Your result using integer division is being rounded down toward the more negative value of `-2`. (This is also known as "Floor division")

This is why you will get the somewhat perplexing answers of:

>>> 8/(-7)
-2
>>> 8/7
1

Note: This is "fixed" in Python 3, where the result of `8/(-7)` would be `-1.143`. So if you have no reason to be using Python 2, you should upgrade. ;)

In Python 3, if you still want integer division, you can use the `//` operator. This will give you the same answer as `8/(-7)` would in Python 2.

Here's a Python Enhancement Proposal on the subject: PEP 238 -- Changing the Division Operator

Problem

In my application I encountered the following and was surprised by the results: `8/-7=-2` (both integers). What does this mean?

Original source