Python division returns a quotient, while floor division rounds its result toward negative infinity rather than toward zero.
Python numeric operators: division, floor division and remainder contracts
Operation contract
The adjustment fixture compares ordinary division with floor division and remainder for a negative amount. Negative seven divided by three floors to negative three, and the remainder is two. The identity dividend equals divisor times quotient plus remainder still holds. A billing rule that expects truncation toward zero must choose that rule explicitly instead of assuming every language shares integer division behavior.
Failure and ownership boundary
Zero divisors are rejected before arithmetic in an input boundary or raise ZeroDivisionError when the operation runs. Floating-point division also introduces representation limits. Monetary values need a separate unit and rounding policy; Python Decimal money: parse decimal text and choose rounding explicitly avoids treating a binary float as an exact decimal wire value.
Working program
adjustment = -7
package_size = 3
print(adjustment / package_size)
print(adjustment // package_size)
print(adjustment % package_size)
try:
adjustment // 0
except ZeroDivisionError:
print("zero divisor rejected")Output
-2.3333333333333335
-3
2
zero divisor rejectedCosts and limits
The fixture uses small integers. Python integers can grow, so arithmetic cost and retained digits increase with operand size; constant-time arithmetic should not be claimed for unbounded input.
Common Mistakes
- Floor division is not truncation toward zero.
- Choose currency rounding separately from division syntax.
Connected lessons
Python Decimal money: parse decimal text and choose rounding explicitly, Python conditions and loops: distinguish no value from an empty value, Java operators and numeric promotion.
Check this related boundary
Python comparison chains: the middle operand is evaluated once.
