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

发布于 2024-10-31 00:58:41 字数 532 浏览 3 评论 0原文

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

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)
将为 tabStr 中的 val 返回 63.457

有什么想法如何实现这种功能?

I have the following repetitive simple code repeated several times that I would like to make a function for:

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)

I want to be able to call this function: def printStr(precision)
Where it preforms the code above and returns tabStr with val to precision decimal points.

For example: printStr(3)
would return 63.457 for val in tabStr.

Any ideas how to accomplish this kind of functionality?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

只涨不跌 2024-11-07 00:58:41
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 字符串

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

where i is the number of decimal places.


BTW, in the recent Python where .format() has superseded %, you could use

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

for the same task.

Or, with field names for clarity:

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

If you are using Python 3.6+, you could simply use f-strings:

f"{id:<15} = {val:6.{i}f}"
没有伤那来痛 2024-11-07 00:58:41

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

试试这个:

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

I know this an old thread, but there is a much simpler way to do this:

Try this:

def printStr(FloatNumber, Precision):
    return "%0.*f" % (Precision, FloatNumber)
北陌 2024-11-07 00:58:41

这也应该起作用。

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

i 是所需精度时,

This should work too

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

where i is the precision required.

看春风乍起 2024-11-07 00:58:41

在 Python 3.8 和 3.9 中测试:

>>> val = 1.123456789
>>> decimals = 3
>>> f"{val:0.{decimals}f}"
'1.123'

Tested in Python 3.8 and 3.9:

>>> val = 1.123456789
>>> decimals = 3
>>> f"{val:0.{decimals}f}"
'1.123'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文