根据模板编号将编号格式化为字符串



我想根据另一个模板/示例数字的精度显示一个数字。

比如,有example_number = 0.0001并且能够做format_fp_digits_like(example_number, another_number);用CCD_ 3得到CCD_。

这就是我迄今为止所尝试的:

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"

它很管用,但我觉得很笨拙。可能还有更好的方法?

您也可以使用字符串格式:

def rounder(template_number, number):
return ('{0:.%sf}' % len(str(template_number).split('.')[-1])).format(number)

rounder(0.0001, 10.12345)
'10.1235'

最新更新