2012-01-08 6 views
5

私は最終的に通貨としてファイルに書き込む浮動小数点として数値を格納するプログラムに取り組んでいます。私は現在round()関数を使って2小数点以下に丸めていますが、3桁目の小数点が何であっても次のペニーに丸めるのがビジネスエリアになります。例:

x = 39.142 

この場合、xを39.15に丸めようとしています。私は、ラウンド関数を実行する際に明らかに私が39.14 ...

>>> round(x, 2) 
    39.14 

を取得し、私はいつも次のペニーに切り上げることができます方法はありますか?私が扱っている数字は、通貨としてファイルに印刷されていることに言及する必要があります。使用

+4

通貨の場合は、フロートで作業しないでください。それはただのトラブルを求めているだけです。それはもちろん、行うことができますが、それは価値があるよりも多くのトラブルです。 – harold

+2

@ LanceCollins:あなたが選択した答えは大変間違っています。私のコメントを見てください。 –

答えて

14

decimal module

import decimal 
D = decimal.Decimal 
cent = D('0.01') 

x = D('39.142') 
print(x.quantize(cent,rounding=decimal.ROUND_UP)) 
# 39.15 

小数は四捨五入のために多くのオプションを持っています。オプションとその意味はhereです。

+0

+1これは受け入れられる回答でなければなりません。ティムズは削除する必要があります。 –

+0

Tim - 私はunutbuの答えを受け入れました。 –

1

セントで書く場合は、int(x * 100 + .5)を使用してフロートドルのセントから整数を取得できます。

関連する問題