19

我有以下重复的简单代码重复了几次,我想为其创建一个函数:

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.457for valin tabStr

任何想法如何完成这种功能?

4

3 回答 3

42
tabStr += '%-15s = %6.*f\n' % (id, i, val)  

其中i是小数位数。


顺便说一句,在最近.format()被取代的 Python 中%,你可以使用

"{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}"
于 2011-04-06T22:36:30.913 回答
12

我知道这是一个旧线程,但是有一种更简单的方法可以做到这一点:

尝试这个:

def printStr(FloatNumber, Precision):
    return "%0.*f" % (Precision, FloatNumber)
于 2013-09-03T19:40:50.990 回答
0

这也应该工作

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

i所需的精度在哪里。

于 2011-04-07T01:08:42.677 回答