Pythonで小数点以下2桁のフロートを表示する


136

浮動小数点数の引数(通常は整数または有効数字1桁の10進数)を取る関数があり、小数点以下2桁の文字列で値を出力する必要があります(5-> 5.00、5.5-> 5.50など)。Pythonでこれを行うにはどうすればよいですか?

回答:


148

そのために文字列フォーマット演算子を使用できます。

>>> '%.2f' % 1.234
'1.23'
>>> '%.2f' % 5.0
'5.00'

演算子の結果は文字列なので、変数に保存したり、印刷したりできます。


273

この投稿はしばらくここにあるかもしれないので、Python 3の構文も指摘しましょう。

"{:.2f}".format(5)

9
完全をd=3"{:.{}f}".format(5, d)
期す

74

f-stringのフォーマット:

これはPython 3.6の新機能です。文字列は通常どおり引用符で囲まれ、生の文字列のf'...場合と同じ方法で先頭に追加されr'...ます。次に、文字列、変数、数値、中括弧内に配置したいものをすべて配置します。Python f'some string text with a {variable} or {number} within that text'は、以前の文字列フォーマットメソッドと同じように評価されますが、このメソッドの方がはるかに読みやすくなっています。

>>> a = 3.141592
>>> print(f'My number is {a:.2f} - look at the nice rounding!')

My number is 3.14 - look at the nice rounding!

この例では、以前の文字列フォーマット方法と同様に、小数点以下の桁数でフォーマットしていることがわかります。

NB aは、数値、変数、さらには式f'{3*my_func(3.14):02f}'です。

今後、新しいコードでは、一般的な%sまたはstr.format()メソッドよりもf文字列の方がはるかに読みやすくなり、多くの場合はるかに高速になるため、f文字列を優先します


6

文字列のフォーマット:

print "%.2f" % 5

1
しかし、すべてこれは、文字列であるので、それらの上に任意の数学的な操作を行うことができませんIAM
itsaruns

@itsaruns空の小数点以下を追加しても、数学的な演算を実行するだけの場合は違いがありません。あなたはを探している可能性がありmath.floormath.ceilまたはround
スティーンSchütt


4

文字列のフォーマット:

a = 6.789809823
print('%.2f' %a)

または

print ("{0:.2f}".format(a)) 

ラウンド関数を使用できます:

print(round(a, 2))

round()の良い点は、この結果を別の変数に格納して、それを他の目的に使用できることです。

b = round(a, 2)
print(b)

5
に対する反対投票round表示だけに使用すべきではありません。
WIM

@wim私はあなたのコメントを尊重しますが、これは単に誰かの要件を満たすためのものです。
debaonline4u

2
@ debaonline4u wimは正しいです。round(5.0001, 2)-> 5.0、ない'5.00'
wjandrea


3

別に表示するだけでなく、実際に数値自体を変更する場合は、format()を使用します

小数点以下2桁にフォーマットします。

format(value, '.2f')

例:

>>> format(5.00000, '.2f')
'5.00'

0

私はそれが古い質問であることを知っていますが、自分で答えを見つけるのに苦労していました。これが私が思いついたものです:

Python 3:

>>> num_dict = {'num': 0.123, 'num2': 0.127}
>>> "{0[num]:.2f}_{0[num2]:.2f}".format(num_dict) 
0.12_0.13

3
こんにちは、Stack Overflowへようこそ。すでに多くの回答が含まれている質問に回答する場合は、提供する回答が実質的であり、元の投稿者がすでに精査した内容を単にエコーするのではなく、なぜ追加の洞察を追加してください。これは、提供したような「コードのみ」の回答では特に重要です。
chb


-1

入力の呼び出し時に小数点以下2桁に制限された浮動小数点値を取得する場合は、

これをチェックしてください〜

a = eval(format(float(input()), '.2f'))   # if u feed 3.1415 for 'a'.
print(a)                                  # output 3.14 will be printed.

なぜevalあなたはちょうどできるのに文字列roundですか?あなたが養う場合ので、とにかくこれでも正常に動作しない5、あなたが得る5.0代わりに5.00OPが望んでいるよう。
wjandrea

また、これは動作しませんnaninf
wjandrea
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.