| f | from functools import wraps | f | from functools import wraps | 
            | n | import math | n |  | 
            |  |  |  |  | 
            |  | class Fix: |  | class Fix: | 
            |  |  |  |  | 
            |  | def __init__(self, n): |  | def __init__(self, n): | 
            |  | self.n = n |  | self.n = n | 
            |  |  |  |  | 
            | n | def __call__(self, fun): | n | def __call__(self, f): | 
            |  |  |  |  | 
            | t | @wraps(fun) | t | @wraps(f) | 
            |  | def newfun(*args, **kwargs): |  | def wrapper(*args, **kwargs): | 
            |  | newargs = [round(arg, self.n) if isinstance(arg, float) else |  | round_args = [round(arg, self.n) if isinstance(arg, float) e | 
            |  | arg for arg in args] |  | lse arg for arg in args] | 
            |  | newkwargs = {key: round(value, self.n) if isinstance(value, |  | round_kwargs = {k: round(v, self.n) if isinstance(v, float) | 
            |  | float) else value for key, value in kwargs.items()} |  | else v for k, v in kwargs.items()} | 
            |  | res = fun(*newargs, **newkwargs) |  | ret = f(*round_args, **round_kwargs) | 
            |  | return round(res, self.n) if isinstance(res, float) else res |  | return round(ret, self.n) if isinstance(ret, float) else ret | 
            |  | return newfun |  | return wrapper |