输出格式化Python 3.2

时间:2011-07-12 19:02:49

标签: formatting python-3.x

我有一个与程序输出有关的问题。

 def writeOutput():
    output.write(str(gallons) + '\n')
    output.write(str(usage) + '\n')
    output.write(str(sewer) + '\n')
    output.write(str(tax) + '\n')
    output.write(str(total) + '\n')
    output.write('_______________________' + '\n')

这是我写入文件的功能。 有没有人知道我在哪里可以找到如何写123.45作为“123美元45美分”与美元和美分拼写出来的那样?

谢谢!

3 个答案:

答案 0 :(得分:2)

这样可行:

>>> amount = 123.45
>>> '{} dollars {:.0f} cents'.format(int(amount), (amount - int(amount)) * 100)
'123 dollars 45 cents'

答案 1 :(得分:1)

如果您将amount存储为float(*),则可以使用%格式化运算符,如下所示:

"%d dollars %d cents" % (int(amount), int(amount * 100 % 100))

dollars = int(amount)
"%d dollars %d cents" % (dollars, int((amount - dollars) * 100))

(*)你应该永远不要在真正的金融应用程序中做,因为浮点容易出现舍入错误;改为使用Decimal模块。

答案 2 :(得分:0)

在Python 3(所有3.x?)中,对于“简单”浮动,你可以写:

'{} dollars {} cents'.format( *str(amount).split('.') )

输出:

'123 dollars 45 cents'

显然,str()会隐藏像1.0000000001e-15 这样的浮点数