如何从变量指定浮点数小数精度?

25 投票
4 回答
18884 浏览
提问于 2025-04-16 15:14

我有一段简单的代码,这段代码重复出现了好几次,我想把它做成一个函数:

for i in range(10):
    id  = "some id string looked up in dict"
    val = 63.4568900932840928 # some floating point number in dict corresponding to "id"
    tabStr += '%-15s = %6.1f\n' % (id,val)

我希望能这样调用这个函数:def printStr(precision)
这个函数会执行上面的代码,并返回tabStr,其中val会保留到precision位小数。

举个例子:如果我调用printStr(3)
它会返回63.457,这是tabStr中的val

有没有什么好主意可以实现这样的功能呢?

4 个回答

0

这个方法也应该可以用。

tabStr += '%-15s = ' % id + str(round(val, i))

这里的 i 是你需要的精确度。

15

我知道这个话题已经讨论很久了,但其实有个更简单的方法可以做到这一点:

你可以试试这个:

def printStr(FloatNumber, Precision):
    return "%0.*f" % (Precision, FloatNumber)
47
tabStr += '%-15s = %6.*f\n' % (id, i, val)  

这里的 i 是小数点后面的位数。


顺便提一下,在最近的 Python 版本中,.format() 已经取代了 % 的用法,你可以使用

"{0:<15} = {2:6.{1}f}".format(id, i, val)

来完成相同的任务。

或者,为了更清楚,可以使用字段名称:

"{id:<15} = {val:6.{i}f}".format(id=id, i=i, val=val)

如果你使用的是 Python 3.6 及以上版本,你可以简单地使用 f-strings

f"{id:<15} = {val:6.{i}f}"

撰写回答