Если вы хотите простое решение и не заботитесь о производительности, вы можете использовать такую функцию, чтобы преобразовать в integer, round и convert back to float:
def round_exact(number, decimal_places=0):
"""Round the number to the given number of decimal places by converting to
and from integers to avoid floating point error."""
factor = 10**(decimal_places + 1)
rounded_int = int(number * factor)
if rounded_int % 10 >= 5:
# Round up
return (int(rounded_int//10) + 1) / float(factor//10)
# Round down
return int(rounded_int//10) / float(factor//10)