web-dev-qa-db-ja.com

フロートをドルとセントに変換する

まず第一に、私はこの投稿を(とりわけ)試しました: Currency format in Python 。私の変数には影響しません。私が最も推測しているのは、Python 3を使用しており、それがPython 2のコードだったからだということです。

1234.5などのフロートを「$ 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
46
Evorlor

Python 3.xおよび2.7では、これを簡単に行うことができます。

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

:,は3桁ごとの区切り記号としてカンマを追加し、.2fは最後に文字列を小数点以下2桁に制限します(または、場合によっては小数点以下2桁までゼロを追加します)。

113

-$1,000.00ではなく$-1,000.00のような負の値をフォーマットし、localeを使用したくない場合は、@ JustinBarberの例に基づいて@ eric.frederichのコメントに注意してください。

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

python 3では、次を使用できます。

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

出力

'$1,234.50'
9
Lewis

個人的には、私はこれがはるかに好きです(これは、当然のことながら、現在選択されている「ベストアンサー」を書く別の方法です):

money = float(1234.5)
print('$' + format(money, ',.2f'))

または、複数の文字列を「追加」してそれらを結合するのが本当に嫌な場合は、代わりにこれを行うことができます:

money = float(1234.5)
print('${0}'.format(format(money, ',.2f')))

どちらのスタイルも読みやすいと思います。 :-)

(もちろん、エリックも示唆しているように、負の値を処理するためにIf-Elseを組み込むことができます)

0
Rich Bayless