Przeliczanie Float na dolary i centy
Po pierwsze, wypróbowałem ten post (m.in.): formatowanie waluty w Pythonie . To nie ma wpływu na moją zmienną. Domyślam się, że to dlatego, że używam Pythona 3 i to był kod dla Pythona 2. (Chyba, że coś przeoczyłem, bo jestem nowy w Pythonie).
Chcę przekonwertować float, taki jak 1234.5, na String, taki jak"$1,234.50". Jak miałbym to zrobić?
I na wszelki wypadek, Oto Mój kod, który skompilował, ale nie wpływ na moją zmienną:
money = float(1234.5)
locale.setlocale(locale.LC_ALL, '')
locale.currency(money, grouping=True)
Także:
money = float(1234.5)
print(money) #output is 1234.5
'${:,.2f}'.format(money)
print(money) #output is 1234.5
4 answers
W Pythonie 3.x i 2.7, można to po prostu zrobić:
>>> '${:,.2f}'.format(1234.5)
'$1,234.50'
:,
dodaje przecinek jako separator tysięcy, a .2f
ogranicza łańcuch do dwóch miejsc po przecinku (lub dodaje tyle zer, aby uzyskać do 2 miejsc po przecinku, w zależności od przypadku) na końcu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-18 18:57:37
Bazując na przykładzie @ JustinBarber i zauważając @eric.komentarz fredericha, jeśli chcesz sformatować wartości ujemne jak -$1,000.00
zamiast $-1,000.00
i nie chcesz używać locale
:
def as_currency(amount):
if amount >= 0:
return '${:,.2f}'.format(amount)
else:
return '-${:,.2f}'.format(-amount)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-19 16:38:24
W Pythonie 3 możesz użyć:
import locale
locale.setlocale( locale.LC_ALL, 'English_United States.1252' )
locale.currency( 1234.50, grouping = True )
Wyjście
'$1,234.50'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-17 22:31:49
Powiedziałeś, że:
`mony = float(1234.5)
print(money) #output is 1234.5
'${:,.2f}'.format(money)
print(money)
Nie zadziałało....
Kodowałeś dokładnie w ten sposób?
To powinno zadziałać (patrz mała różnica):
money = float(1234.5) #next you used format without printing, nor affecting value of "money"
amountAsFormattedString = '${:,.2f}'.format(money)
print( amountAsFormattedString )
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-21 00:08:06