def roundk(value: float | int, digits: int | None = None) -> float | int:
if not isinstance(value, (float, int)):
raise NotImplementedError("Only float is implemented")
def iceil():
return (value // 10 + 1) * 10
def ifloor():
return (value // 10) * 10
def do_iceil():
return (value % 10) >= 5
return_type = int if digits is None or isinstance(value, int) else float
digits = digits or 0
to_int = 10 ** (digits + 1)
to_float = 10 ** (-digits - 1)
value = int(value * to_int)
if do_iceil():
return return_type(iceil() * to_float)
else:
return return_type(ifloor() * to_float)
roundk(155.4, -1)
Comments
0 B
|👍
/👎