文字列をフォーマットするには、次のものがあります。
'%.2f' % n
n
が負のゼロ (など) の場合-0
、-0.000
出力は になります-0.00
。
0.00
の負のゼロ値と正のゼロ値の両方に対して常に出力を行うにはどうすればよいn
ですか?
(これを達成するのはかなり簡単ですが、私が簡潔なpythonic方法と呼ぶものを見つけることができません。理想的には、私が認識していない文字列フォーマットオプションがあります。)
文字列をフォーマットするには、次のものがあります。
'%.2f' % n
n
が負のゼロ (など) の場合-0
、-0.000
出力は になります-0.00
。
0.00
の負のゼロ値と正のゼロ値の両方に対して常に出力を行うにはどうすればよいn
ですか?
(これを達成するのはかなり簡単ですが、私が簡潔なpythonic方法と呼ぶものを見つけることができません。理想的には、私が認識していない文字列フォーマットオプションがあります。)
ゼロを追加:
>>> a = -0.0
>>> a + 0
0.0
フォーマットできます:
>>> '{0:.3f}'.format(a + 0)
'0.000'
非常に密接に関連する問題は、-0.00001 も "-0.00" としてフォーマットされることです。それは同じように混乱する可能性があります。上記の回答はこれを処理しません(固定された正規表現が必要なuser278064を除く)。
醜いですが、これはこの場合に私ができる最善のことです:
import re
re.sub (r"^-(0\.?0*)$", r"\1", "%.2f" % number)
最も簡単な方法は、フォーマットでゼロを特殊化することです。
>>> 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
>>> 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
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"