Просто хотел упомянуть, что старый трюк "make round () with floor ()" из
round(f) = floor(f+0.5)
можно повернуть, чтобы сделать этаж () из круглого ()
floor(f) = round(f-0.5)
Хотя оба эти правила разбивают отрицательные числа, поэтому его использование не идеально:
def trunc(f, n):
if f > 0:
return "%.*f" % (n, (f - 0.5*10**-n))
elif f == 0:
return "%.*f" % (n, f)
elif f < 0:
return "%.*f" % (n, (f + 0.5*10**-n))