2

Python 2.7.3

>>> print '%2.2f' % 0.1
0.10

我的文档说类型 % 应该与类型 f 相同,只是输入乘以 100。

>>> print '%2.2%' % 0.1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
4

3 回答 3

8

使用新的格式表达式,它具有您所指的格式化程序

print "{:%}".format(0.1)
#10.000000%

如果你只想要整数部分,你可以使用精度规范

print "{:.0%}".format(0.1)
#10%

见文档

http://docs.python.org/2/library/string#formatspec

稍微扩展一下,新格式说明符确实比旧格式说明符更强大。首先,按顺序或名称调用参数非常简单

"play the {instrument} all {moment}, even if my {instrument} is old".format(moment='day', instrument='guitar')
#'play the guitar all day, even if my guitar is old'

然后,如文档中所见,可以访问对象的属性:

"the real component is {0.real} and the imaginary one is {0.imag}".format(3+4j)
#'the real component is 3.0 and the imaginary one is 4.0'

远不止这些,但你可以在文档中找到它,这很清楚。

于 2012-11-23T00:42:34.323 回答
1
print '%2.2%' % 0.1

告诉它格式字符串 (%) 中有 2 个占位符,所以你有一个抱怨

于 2012-11-23T00:44:07.583 回答
1

遇到了这个问题。.format在 Python 3 中,您可以以与上述类似的方式简单地使用 fstrings(从而避免使用)。格式为:

print(f"{your_number:.n_decimals%}")

例如。

>>> print(f"{0.0350:.2%}")
3.50%
于 2021-11-26T16:22:27.950 回答