我想要一个将float格式化为可变长度精度的函数。例如,如果我传入n = 2,我希望精度为1.67;如果我传入n=5
,我会期待1.66667
。
我目前有以下内容,但我觉得有一种更简单的方法可以做到这一点。有吗?
def my_precision(x, n):
fmt = '{:.%df}' % n
return fmt.format(x)
答案 0 :(得分:3)
你的解决方案很好。
但是,作为风格的个人问题,我倾向于仅使用%
,或仅使用str.format()
。
所以在这种情况下,我将格式化函数定义为:
def my_precision(x, n):
return '{:.{}f}'.format(x, n)
(感谢@MarkDickinson提出了'{{:.{:d}f}}'.format(n).format(x)
的更短替代方案)
顺便说一句,您可以这样做:
my_precision = '{:.{}f}'.format
它有效:
>>> my_precision(3.14159, 2)
'3.14'
: - )
答案 1 :(得分:3)
从带有PEP 498的Python 3.6中,您可以使用“ f字符串”来设置这种格式
>>> x = 123456
>>> n = 3
>>> f"{x:.{n}f}"
'123456.000'
有关更多详细信息,请参见此处:
答案 2 :(得分:0)
你可以直接使用它:
my_precision = lambda x, n: '{}'.format(round(x, n))