Variety of rounding methods and implementations
StandardRound rounds to the nearest, and in the event of a tie, rounds up.
RoundToEven rounds to the nearest, but in the event of a tie, rounds toward
the nearest even number.
StochasticRound provides a mechanism to eliminate accumulated
roundoff error in the presence of a distribution where for
individual samples, the roundoff error is skewed. This is typically
caused by small values. This may be a common problem when dealing with applying a
function to many small integer values as the number of discreet inputs is small.
One drawback to stochastic rounding is the output is non-deterministic, but this can be avoided by providing a custom deterministic generator, or invoking providing the random number generator with a fixed seed.
r = random.Random() r.seed(123) sr = StochasticRound(precision=0, random_generator=r)