如何从变量指定浮点数小数精度?
我有一段简单的代码,这段代码重复出现了好几次,我想把它做成一个函数:
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}"