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

问题描述 投票:0回答:4

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

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
中的
val
返回
tabStr

有什么想法可以实现这种功能吗?

python string floating-point floating-point-precision
4个回答
45
投票
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}"

15
投票

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

试试这个:

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

0
投票

这也应该有效

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

其中

i
是所需的精度。


0
投票

在 python 3.8 和 3.9 中测试:

>>> val = 1.123456789
>>> decimals = 3
>>> f"{val:0.{decimals}f}"
'1.123'
© www.soinside.com 2019 - 2024. All rights reserved.