33

文字列をフォーマットするには、次のものがあります。

'%.2f' % n

nが負のゼロ (など) の場合-0-0.000出力は になります-0.00

0.00の負のゼロ値と正のゼロ値の両方に対して常に出力を行うにはどうすればよいnですか?

(これを達成するのはかなり簡単ですが、私が簡潔なpythonic方法と呼ぶものを見つけることができません。理想的には、私が認識していない文字列フォーマットオプションがあります。)

4

5 に答える 5

83

ゼロを追加:

>>> a = -0.0
>>> a + 0
0.0

フォーマットできます:

>>> '{0:.3f}'.format(a + 0)
'0.000'
于 2012-06-13T08:18:35.803 に答える
5

非常に密接に関連する問題は、-0.00001 も "-0.00" としてフォーマットされることです。それは同じように混乱する可能性があります。上記の回答はこれを処理しません(固定された正規表現が必要なuser278064を除く)。

醜いですが、これはこの場合に私ができる最善のことです:

import re
re.sub (r"^-(0\.?0*)$", r"\1", "%.2f" % number)
于 2016-04-13T16:59:01.160 に答える
2

最も簡単な方法は、フォーマットでゼロを特殊化することです。

>>> a = -0.0
>>> '%.2f' % ( a if a != 0 else abs(a) )
0.0

ただし、このstr.format方法は置換よりも優先されることに注意してください%。この場合 (およびほとんどの単純な場合) の構文はほぼ同じです。

>>> '{:.2f}'.format(a if a != 0 else abs(a))

また、より簡潔であるとはa or abs(a)思えないことに注意してください。bool(a)False

于 2012-06-13T08:24:20.410 に答える
1
>>> x= '{0:.2f}'.format(abs(n) if n==0 else n)
>>> print(x) 
0.00

状態の理由if

>>> -0.0000==0
True
>>> 0.000==0
True
>>> 0.0==0
True
于 2012-06-13T08:19:47.390 に答える
1
import re
re.sub("[-+](0\.0+)", r"\1", number)

例えば:

re.sub("[-+](0\.0+)", r"\1", "-0.0000") // "0.0000"
re.sub("[-+](0\.0+)", r"\1", "+0.0000") // "0.0000"    
于 2012-06-13T08:17:19.747 に答える