12

小数点付きの数値を先行ゼロでフォーマットしたい。

これ

>>> '3.3'.zfill(5)
003.3

すべての桁、さらには小数点も考慮します。全体だけを考慮するPythonの関数はありますか?

小数点以下5桁以下の単純な数値をフォーマットするだけで済みます。また、を使用%5fすると、先行ゼロではなく末尾が考慮されるようです。

4

5 に答える 5

26

それはあなたが探しているものですか?

>>> "%07.1f" % 2.11
'00002.1'

だからあなたのコメントによると、私はこれを思い付くことができます(もうそれほどエレガントではありませんが):

>>> fmt = lambda x : "%04d" % x + str(x%1)[1:]
>>> fmt(3.1)
0003.1
>>> fmt(3.158)
0003.158
于 2011-09-13T20:09:05.417 に答える
14

新しいスタイルのフォーマットが好きです。

loop = 2
pause = 2
print 'Begin Loop {0}, {1:06.2f} Seconds Pause'.format(loop, pause)
>>>Begin Loop 2, 0002.1 Seconds Pause

{1:06.2f}の場合:

  • 1は可変ポーズのプレースホルダーです
  • 0は、先行ゼロで埋めることを示します
  • 小数点を含む合計6文字
  • 2精度
  • fは整数を浮動小数点数に変換します
于 2015-06-25T13:16:07.523 に答える
3

このような?

>>> '%#05.1f' % 3.3
'003.3'
于 2011-09-13T20:09:16.833 に答える
3

あなたの例のように文字列から始めて、あなたはあなたが望むことをするためにこのような小さな関数を書くことができます:

def zpad(val, n):
    bits = val.split('.')
    return "%s.%s" % (bits[0].zfill(n), bits[1])

>>> zpad('3.3', 5)
'00003.3'
于 2011-09-13T20:19:57.640 に答える
3
print('{0:07.3f}'.format(12.34))

これは、小数点以下3桁を含む合計7文字になります。「012.340」

于 2019-11-03T04:44:48.923 に答える