格式化 Python 中的两个数字

Formatting two numbers in Python

我正在处理数字格式。我假设 .format 允许使用多个参数:

a = 1.11111111111
b = 0.9
s = '({0:.2f}, {0:.2f})'.format(a, b)
print(s)

Returns:

'(1.11, 1.11)'

而不是:

'(1.11, 0.90)'

另一方面,这工作正常:

'({}, {})'.format(a, b)

Returns:

'(1.11111111111111, 0.9)'

知道问题出在哪里吗?

您为两个参数都使用了值 a (0),您应该在第二个参数中调用值 b (1)。

: 之前的值用于为占位符提供明确的位置索引。

这允许 re-arranging 在不更改参数的情况下显示顺序。

改变

s = '({0:.2f}, {0:.2f})'.format(a, b)

收件人:

s = '({0:.2f}, {1:.2f})'.format(a, b)

: 字符之前的值指定字段名称或转换;通过在这两种情况下使用 0,您实际上是在通过元素索引告诉 .format 在这两种情况下都使用 a

在你的第二种情况下,'({}, {})'.format(a, b),通过 not 指定位置,.format 用元素替换每个空对 {}按位置递增顺序提供。

如建议的那样,一个简单的替换是使用 1 来指示您要使用 b 而不是 a。或者,简单地省略它们:

s = '({:.2f}, {:.2f})'.format(a, b)

获得类似的效果。


您应该浏览 Syntax for the format strings 以了解格式化时使用的规则。