def formatted_string_to_int(s): if isinstance(s, int): return s assert isinstance(s, str), f"Argument 's' must be of type str or int, got {s}" s = s.strip().lower() multipliers = { 'k': 1_000, 'm': 1_000_000, 'b': 1_000_000_000, 't': 1_000_000_000_000 } if s[-1] in multipliers: num = float(s[:-1]) return int(num * multipliers[s[-1]]) else: return int(float(s)) def int_to_formatted_string(n): if isinstance(n, str): return n assert isinstance(n, int), f"Argument 'n' must be of type int, got {type(n)}" suffixes = [ (1_000_000_000_000, "t"), (1_000_000_000, "b"), (1_000_000, "m"), (1_000, "k"), ] for factor, suffix in suffixes: if abs(n) >= factor: value = n / factor return f"{value:.3g}{suffix}" return str(n)