| f | from functools import wraps | f | from functools import wraps | 
            |  |  |  |  | 
            |  | class Fix: |  | class Fix: | 
            |  |  |  |  | 
            | n | def __init__(self, num): | n | def __init__(self, n): | 
            |  | self.num = num |  | self.n = n | 
            |  |  |  |  | 
            | n | def __call__(self, fun): | n | def __call__(self, func): | 
            |  |  |  |  | 
            | t | @wraps(fun) | t | @wraps(func) | 
            |  | def fixer(*args, **kwargs): |  | def wrapper(*args, **kwargs): | 
            |  | new_args = [round(arg, self.num) if isinstance(arg, float) e |  | rounded_args = [round(arg, self.n) if isinstance(arg, float) | 
            |  | lse arg for arg in args] |  | else arg for arg in args] | 
            |  | new_kwargs = {name: round(arg, self.num) if isinstance(arg, |  | rounded_kwargs = {key: round(value, self.n) if isinstance(va | 
            |  | float) else arg for name, arg in kwargs.items()} |  | lue, float) else value for key, value in kwargs.items()} | 
            |  | res = fun(*new_args, **new_kwargs) |  | result = func(*rounded_args, **rounded_kwargs) | 
            |  | if isinstance(res, float): |  | if isinstance(result, float): | 
            |  | res = round(res, self.num) |  | result = round(result, self.n) | 
            |  | return res |  | return result | 
            |  | return fixer |  | return wrapper |