如何将浮点数格式化为可变精度?

时间:2015-06-17 16:26:09

标签: python

我想要一个将float格式化为可变长度精度的函数。例如,如果我传入n = 2,我希望精度为1.67;如果我传入n=5,我会期待1.66667

我目前有以下内容,但我觉得有一种更简单的方法可以做到这一点。有吗?

def my_precision(x, n):
    fmt = '{:.%df}' % n
    return fmt.format(x)

3 个答案:

答案 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)

在2019年使用Python> = 3.6

从带有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))