在Python中格式化两个数字

Kar*_*cek 5 python string string-formatting python-3.x

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

a = 1.11111111111
b = 0.9
s = '({0:.2f}, {0:.2f})'.format(a, b)
print(s)
Run Code Online (Sandbox Code Playgroud)

返回:

'(1.11, 1.11)'
Run Code Online (Sandbox Code Playgroud)

代替:

'(1.11, 0.90)'
Run Code Online (Sandbox Code Playgroud)

另一方面,这很好用:

'({}, {})'.format(a, b)
Run Code Online (Sandbox Code Playgroud)

返回:

'(1.11111111111111, 0.9)'
Run Code Online (Sandbox Code Playgroud)

知道问题出在哪里?

omr*_*don 10

您用于两个参数值a(0),您应该在第二个参数中调用值b(1).

之前的值:是给占位符一个明确的位置索引.

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

更改

s = '({0:.2f}, {0:.2f})'.format(a, b)
Run Code Online (Sandbox Code Playgroud)

至:

s = '({0:.2f}, {1:.2f})'.format(a, b)
Run Code Online (Sandbox Code Playgroud)


Jim*_*ard 5

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

在第二种情况下,'({}, {})'.format(a, b)通过指定位置,.format{}逐渐增加的位置顺序替换每个空对.

如建议的那样,一个简单的替换是1用来表示你想要使用b而不是a.或者,只需省略它们:

s = '({:.2f}, {:.2f})'.format(a, b)
Run Code Online (Sandbox Code Playgroud)

得到类似的效果.


您应该浏览格式字符串语法,以了解格式化时使用的规则.