Я хотел бы отобразить число в соответствии с точностью другого номера шаблона / примера.
Например, иметь example_number = 0.0001
и иметь возможность делать format_fp_digits_like(example_number, another_number)
;с another_number=10.12345
я бы получил 10.1234
.
Это то, что я пробовал до сих пор:
import math
def format_fp_digits_like(template_number, number):
n_digits = len(str(int(number)))
if '.' in str(template_number):
n_fp_digits = len(str(math.modf(template_number)[0]).split(".")[-1])
else:
n_fp_digits = 0
fs = "{:"+f"{n_digits}.{n_fp_digits}f"+"}"
return fs.format(number)
assert format_fp_digits_like(0.0001, 16.12345) == "16.1234"
assert format_fp_digits_like(1, 16.123) == "16"
assert format_fp_digits_like(0.1, 8.5) == "8.5"
Это работает, но я нахожу это неуклюжим. Есть, наверное, лучший способ?