在Python中格式化两个数字

时间:2017-02-15 13:17:29

标签: python string python-3.x string-formatting

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

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

返回:

'(1.11, 1.11)'

而不是:

'(1.11, 0.90)'

另一方面,这很好用:

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

返回:

'(1.11111111111111, 0.9)'

知道问题在哪里?

2 个答案:

答案 0 :(得分:10)

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

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

这允许在不改变参数的情况下重新排列显示顺序。

更改

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

要:

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

答案 1 :(得分:5)

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

在第二种情况下,'({}, {})'.format(a, b)指定一个位置,.format将每个空{}对替换为以递增顺序提供的元素位置。

根据建议,一个简单的替换是使用1表示您要使用b而不是a。或者,只需省略它们:

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

获得类似的效果。

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