Подтвердить что ты не робот

Преобразование Float в доллары и центы

Прежде всего, я пробовал этот пост (среди прочих): Форматирование валюты на Python. Это не влияет на мою переменную. Я предполагаю, что это потому, что я использую Python 3, и это был код для Python 2. (Если я ничего не заметил, потому что я новичок в Python).

Я хочу преобразовать float, например 1234.5, в String, например "$ 1,234.50". Как мне это сделать?

И на всякий случай, вот мой код, который скомпилирован, но не повлиял на мою переменную:

money = float(1234.5)
locale.setlocale(locale.LC_ALL, '')
locale.currency(money, grouping=True)

Также неудачно:

money = float(1234.5)
print(money) #output is 1234.5
'${:,.2f}'.format(money)
print(money) #output is 1234.5
4b9b3361

Ответ 1

В Python 3.x и 2.7 вы можете просто сделать это:

>>> '${:,.2f}'.format(1234.5)
'$1,234.50'

:, добавляет запятую в качестве разделителя тысяч, а .2f ограничивает строку до двух знаков после запятой (или добавляет достаточное количество нулей, чтобы получить в итоге 2 десятичных знака, в зависимости от случая) в конце.

Ответ 2

Основываясь на примере @JustinBarber и отмечая комментарий @eric.frederich, если вы хотите отформатировать отрицательные значения, например -$1,000.00, а не $-1,000.00 и не хотите использовать locale:

def as_currency(amount):
    if amount >= 0:
        return '${:,.2f}'.format(amount)
    else:
        return '-${:,.2f}'.format(-amount)

Ответ 3

В python 3 вы можете использовать:

import locale
locale.setlocale( locale.LC_ALL, 'English_United States.1252' )
locale.currency( 1234.50, grouping = True )

Выход

'$1,234.50'

Ответ 4

вы сказали, что:

`mony = float(1234.5)
print(money)      #output is 1234.5
'${:,.2f}'.format(money)
print(money)

не работает. Вы так заколлировали? Это должно работать (см. Небольшую разницу):

money = float(1234.5)      #next you used format without printing, nor affecting value of "money"
amountAsFormattedString = '${:,.2f}'.format(money)
print( amountAsFormattedString )