import datetime us = datetime.timedelta(microseconds = 1) def div_nearest(m, n): """Nearest integer to m / n for integers m and n.""" q, r = divmod(m, n) # round-half-to-even if 2*r > n or 2*r == n and q % 2 == 1: q += 1 return q def mul_td_float(td, x): """Multiply a timedelta td by a float x.""" n, d = x.as_integer_ratio() return div_nearest(td // us * n, d) * us def div_td_float(td, x): """Divide a timedelta td by a float x.""" n, d = x.as_integer_ratio() return div_nearest(td // us * d, n) * us