Incorrect rounding python with floating point numbers
Python 3 rounds according to the IEEE 754 standard using an even- rounding approach.
If you want to round in a different way, just implement this manually:
import math def my_round(n, ndigits): part = n * 10 ** ndigits delta = part - int(part) # always round "away from 0" if delta >= 0.5 or -0.5 < delta <= 0: part = math.ceil(part) else: part = math.floor(part) return part / (10 ** ndigits) Usage example:
In [12]: my_round(0.3125, 3) Out[12]: 0.313 Note: in python2, rounding is always from zero, while in python3 it rounds to even. (see, for example, the difference in documentation for the round function between 2.7 and 3.3).