23

浮動小数点数のリストを、最大で小数点以下 2 桁までフォーマットしたいと考えています。しかし、私は末尾のゼロを望んでおらず、末尾の小数点も望んでいません。

たとえば、4.001=> 44.797=> 4.88.992=> 8.9913.577=>13.58です。

簡単な解決策は. しかし、それはかなり醜く壊れやすいように見えます。おそらくいくつかの魔法のフォーマットフラグを使用して、より良い解決策はありますか?('%.2f' % f).rstrip('.0')('%.2f' % f).rstrip('0').rstrip('.')

4

3 に答える 3

23

gフォーマッタは、出力をn有効数字に制限し、末尾のゼロを削除します。

>>> "{:.3g}".format(1.234)
'1.23'
>>> "{:.3g}".format(1.2)
'1.2'
>>> "{:.3g}".format(1)
'1'
于 2013-02-21T11:31:54.670 に答える
21

0.ストリッピングを分離する必要があります。そうすれば、自然を剥ぎ取ることはありません0

または、関数を使用しformat()ますが、それは実際には同じことです。

format(f, '.2f').rstrip('0').rstrip('.')

いくつかのテスト:

>>> def formatted(f): return format(f, '.2f').rstrip('0').rstrip('.')
... 
>>> formatted(0.0)
'0'
>>> formatted(4.797)
'4.8'
>>> formatted(4.001)
'4'
>>> formatted(13.577)
'13.58'
>>> formatted(0.000000000000000000001)
'0'
>>> formatted(10000000000)
'10000000000'
于 2013-02-21T11:30:58.780 に答える