在Python中使用.format()方法时,如何在{}中使用多个参数

Kel*_*tin 3 python string.format rounding string-formatting python-3.x

我希望python中的表格打印如下:

显然,我想使用.format()方法,但是我有很长的浮点数看起来像这样:1464.1000000000001我需要将浮点数舍入为止,它们看起来像这样:( 1464.10总是两位小数,即使两者都是零,所以我不能使用round()函数).

我可以使用浮动圆形"{0:.2f}".format("1464.1000000000001"),但是它们不会打印到漂亮的桌子上.

我可以通过这样做把它们放到漂亮的桌子里"{0:>15}.format("1464.1000000000001"),但是它们并没有四舍五入.

有办法做到这两点吗?有点像"{0:>15,.2f}.format("1464.1000000000001")

Mar*_*ers 5

你几乎就在那里,只需删除逗号(并传入一个浮点数,而不是一个字符串):

"{0:>15.2f}".format(1464.1000000000001)
Run Code Online (Sandbox Code Playgroud)

请参阅格式规范迷你语言部分:

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]
fill        ::=  <any character>
align       ::=  "<" | ">" | "=" | "^"
sign        ::=  "+" | "-" | " "
width       ::=  integer
precision   ::=  integer
type        ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Run Code Online (Sandbox Code Playgroud)

打破以上格式:

fill: <empty>
align: <  # left
sign: <not specified>
width: 15
precision: 2
type: `f`
Run Code Online (Sandbox Code Playgroud)

演示:

>>> "{0:>15.2f}".format(1464.1000000000001)
'        1464.10'
Run Code Online (Sandbox Code Playgroud)

请注意,对于数字,默认对齐方式是右侧,因此>可以省略.