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

时间:2011-04-06 22:28:42

标签: python string floating-point floating-point-precision

我有以下重复的简单代码重复多次,我想为它做一个函数:

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 valprecision小数点的位置。

例如:printStr(3)
会在63.457中为val返回tabStr

任何想法如何实现这种功能?

3 个答案:

答案 0 :(得分:28)

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

其中i是小数位数。


BTW,在最近的.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}"

答案 1 :(得分:11)

我知道这是一个旧线程,但有一个更简单的方法:

试试这个:

def printStr(FloatNumber, Precision):
    return "%0.*f" % (Precision, FloatNumber)

答案 2 :(得分:0)

这也应该有用

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

其中i是所需的精度。