打印带有所需缩进的float('+inf')、float('inf')和float('NaN')

2024-04-25 17:58:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个测试某些功能的脚本。在

在这个脚本中,我做了如下操作:

for n in range(1000000):
    minVal,maxVal = getMinMax(n)
    print('Test #{}: minVal = {:.40f}, maxVal = {:.40f}'.format(n+1,minVal,maxVal))

函数getMinMax返回一对float值。在

这包括float('+inf')float('-inf')和{}的值。在

我希望确保这些值是用相同的缩进打印的(即40位数字)。在

显然,我不能在这里加前导或尾随的零,因为这样看起来毫无意义。在

所以我相信前导空格和尾随空格是唯一合理的选择。在

在Python中有什么“聪明”的方法吗?在

执行以下代码可以解释为什么它对我很重要:

^{pr2}$

Tags: intest功能脚本formatforrangefloat
1条回答
网友
1楼 · 发布于 2024-04-25 17:58:50

.40f格式选项将在小数点后显示40位数,因此要获得正确的缩进,必须在小数点前添加小数点和位数。在您的例子中,您处理的是0到1之间的值,因此只需要额外的2个字符。在

最简单的选择是使用><格式选项:

>>> # > for leading spaces
>>> print('Test #{}: minVal = {:>42.40f}, maxVal = {:>42.40f}'.format(8,e,a))
Test #8: minVal =                                        nan, maxVal = 3.1415926535897931159979634685441851615906

>>> # < for trailing spaces
>>> print('Test #{}: minVal = {:<42.40f}, maxVal = {:<42.40f}'.format(8,e,a))
Test #8: minVal = nan                                       , maxVal = 3.1415926535897931159979634685441851615906

>>> # Check for matching indentation
>>> print('Test #{}: minVal = {:.40f}, maxVal = {:.40f}'.format(1,a,b))
Test #1: minVal = 3.1415926535897931159979634685441851615906, maxVal = 2.7182818284590450907955982984276488423347

相关问题 更多 >