Преобразование 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
Ответы
Ответ 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 )