| f | from functools import wraps | f | from functools import wraps | 
             |  |  |  | 
             | class Fix: |  | class Fix: | 
             |  |  |  | 
             |     def __init__(self, n): |  |     def __init__(self, n): | 
            | n |         self._n = n | n |         self.n = n | 
             |  |  |  | 
             |     def __call__(self, func): |  |     def __call__(self, func): | 
             |  |  |  | 
             |         @wraps(func) |  |         @wraps(func) | 
             |         def wrapper(*args, **kwargs): |  |         def wrapper(*args, **kwargs): | 
             |  |  |  | 
            | n |             def round_if_float(value): | n |             def round_value(value): | 
             |                 if isinstance(value, float): |  |                 if isinstance(value, float): | 
            | n |                     return round(value, self._n) | n |                     return round(value, self.n) | 
             |                 else: |  |  | 
             |                     return value |  |                 return value | 
             |             rounded_args = tuple((round_if_float(arg) for arg in args)) |  |             rounded_args = tuple((round_value(arg) for arg in args)) | 
             |             rounded_kwargs = {key: round_if_float(value) for key, value  |  |             rounded_kwargs = {key: round_value(val) for key, val in kwar | 
             | in kwargs.items()} |  | gs.items()} | 
             |             result = func(*rounded_args, **rounded_kwargs) |  |             result = func(*rounded_args, **rounded_kwargs) | 
            | t |             return round_if_float(result) | t |             return round_value(result) | 
             |         return wrapper |  |         return wrapper |