# Rounding decimals in Python (or: Why doesn't .5 round to 1?)

Doing my morning Hacker Rank puzzle this morning, I discovered Python 3 doesn't round numbers ending in .5 the way I'd expect:

int(12.5) >>> 12 int(13.5) >>> 14 round(12.5) >>> 12 round(13.5) >>> 14

As always, Stack Overflow had the answer: Python rounds .5 down *sometimes* because of Banker's Rounding, also known by the much more informative name "Round Half To Even". Python will round `.5`

numbers to the nearest even whole.

In the problem I was solving (giving a rounded total cost of a meal), this didn't work, so I had to use `decimal.Decimal`

's `quantize`

method to round up:

from decimal import Decimal mc = float(input()) # these unpythonic variable names came from HackerRank tp = int(input()) tax = int(input()) def totalCost(mc, tp, tax): total = Decimal(mc + (tp / 100 * float(mc)) + ((tax / 100 * float(mc)))).quantize(Decimal('1')) print("The total meal cost is {} dollars.".format(total)) totalCost(mc, tp, tax)

I'm over 80 characters in that line, so there's the potential for refactoring.