Форматирование вывода Python 3.2 - PullRequest
1 голос
/ 12 июля 2011

У меня есть вопрос, касающийся вывода программы.

 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 ]

2 голосов
/ 12 июля 2011

Это будет работать:

>>> amount = 123.45
>>> '{} dollars {:.0f} cents'.format(int(amount), (amount - int(amount)) * 100)
'123 dollars 45 cents'
1 голос
/ 12 июля 2011

Если у вас 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.

0 голосов
/ 08 января 2014

В Python 3 (все 3.x?) Для «простых» поплавков вы можете написать:

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

Выход:

'123 dollars 45 cents'

По-видимому, str () будет закручивать числа с плавающей точкой, как 1.0000000001e-15

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...