如何格式化 Python 中由宽度而不是精度分隔的浮点数?

How can I format a float in Python delimited by width, not by precision?

我正在寻找一种方法来格式化 Python 中的数字字符串,使我具有固定的宽度,而不管精度如何。下面我举个例子:

假设我想将浮点数格式化为固定宽度 = 8 和精度 = 4。如果我使用以下代码:

number = 3.141516
'{:8.4f}'.format(numero)

它适用于小数字。但是如果我想格式化像 1000000 这样的数字,输出是 1000000.0000,因此宽度大于 8.

有没有一种方法可以设置格式化程序,以便在这种情况下获得固定宽度?

提前致谢

我不太确定你在问什么。 8 的宽度应该包括点吗?

看看这是否回答了您的问题:

print(f'{str(float(number)) + "0"*8}'[:8])

但请注意,在 7 位整数中,最后会留下一个点,因此您需要捕获此异常。我想通过在数字前面添加一个 0 并替换点以保持 8 宽度,但这取决于您要搜索的内容。

数字的宽度也取决于精度。由于您想要固定宽度,我建议您使用 f 字符串并将精度设置为等于宽度,以防精度值大于宽度。

f 字符串的语法:f'{value:{width}.{precision}}'

  • 精度包括整数+小数

您可以这样使用它:

    n = 3.141516
    print(f'{n:{8}.{4}}')

您将得到的输出是:

   3.142