宽度和精度使用*

时间:2009-11-19 16:55:49

标签: python string-formatting

我正在从一本书中学习Python并且遇到了这个例子:

>>> '%f, %.2f, %.*f % (1/3.0, 1/3.0, 4, 1/3.0)
# Result: '0.333333, 0.33, 0.3333'

不太明白这里发生了什么,特别是中间的'4'。

2 个答案:

答案 0 :(得分:3)

我认为你的意思是这样的:

>>> '%f, %2.f, %.*f' % (1/3.0, 1.3, 4, 1/3.0)
'0.333333,  1, 0.3333'

4是一个外卡值,用于代替星号*。扩展后,它将等同于:

>>> '%f, %2.f, %.4f' % (1/3.0, 1.3, 1/3.0)

答案 1 :(得分:1)

您发布的行中有两个语法错误。 1.3.0不是有效数字,字符串未关闭。

这是所述字符串格式的有效版本。

'%f, %2.f, %.*f' % (1/3.0, 1/3.0, 4, 1/3.0)

和输出:

'0.333333, 0.33, 0.3333'

我找不到the official docs中%。* f的文档。但是,它似乎正在解析4是你要在下一个参数处进行多少个小数位。

例如:

'%.*f' % (5, 1/3.0)

返回

'0.33333'

'%.*f' % (6, 1/3.0)

返回

'0.333333'

这似乎是一种提供可变长度精度的方法,因此您可以允许用户指定它。