4

在 python 2.x 中,您可以执行以下操作:

>>> print '%.2f' % 315.15321531321
315.15

但是,我无法让它适用于 python 3.x,我尝试了不同的东西,例如

>>> print ('%.2f') % 315.15321531321
%.2f
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'NoneType' and 'float'

>>> print ("my number %") % 315.15321531321
my number %
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'NoneType' and 'float'

然后,我阅读了 .format() 方法,但我也无法让它工作

>>> "my number {.2f}".format(315.15321531321)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'float' object has no attribute '2f'

>>> print ("my number {}").format(315.15321531321)
my number {}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'format'

我会很高兴任何提示和建议!

4

2 回答 2

4

尝试发送带有格式的整个字符串以进行打印。

print ('%.2f' % 6.42340)

适用于 Python 3.2

此外,该格式通过为所提供的 agruments 提供索引来工作

print( "hello{0:.3f}".format( 3.43234 ))

注意格式标志前面的“0”。

于 2013-02-11T15:47:06.843 回答
2

您的代码的问题在于,在 Python 3 中 print 不再是关键字,而是一个函数,所以会发生这种情况:

>>> print ('%.2f') % 315.15321531321
%.2f
Traceback....  # 

因为它打印字符串并稍后评估“%315.15321531321”部分并且当然失败,所以其他示例也会发生同样的情况。

还行吧:

print(('%.2f') % 315.15321531321)
于 2013-02-11T17:20:20.453 回答