9

私はDecimalPythonでいくつかのインスタンスを持っています。私はそれらを次のようにフォーマットしたい

Decimal('1')       => '1.00'
Decimal('12.0')    => '12.00'
Decimal('314.1')   => '314.10'
Decimal('314.151') => '314.151'

したがって、小数点以下が常に少なくとも 2 桁、場合によってはそれ以上になるようにします。小数点以下を四捨五入するための解決策nはたくさんありますが、数値の下限を確実にする適切な方法は見つかりません。

私の現在の解決策は、計算することです:

first  = '{}'.format(d)
second = '{:.2f}'.format(d)

そして、どちらか長い方を取ります。ただし、ややハックのようです。

4

1 に答える 1

2

文字列の問題を回避したい場合:

if d*100 - int(d*100):
    print str(d)
else:
    print ".2f" % d

テストされていないコードですが、動作するはずです。

これは次のように機能します。

d = 12.345

100 倍:

1234.5

マイナス整数(1234.5)

1234.5 - 1234 = .5

.5 != 0

これは、小数点以下が 3 桁以上あることを意味します。

印刷文字列(12.345)

12.3405 を実行しても:

1234.05 - 1234 = .05

.05 != 0

ただし、12.3 を使用している場合:

1230 - 1230 = 0

これは、%.2f で印刷することを意味します。

于 2012-06-24T22:10:16.017 に答える