如何格式化 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
我正在寻找一种方法来格式化 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