web-dev-qa-db-ja.com

浮動小数点数をPythonで、小数点以下の最大桁数で、余分なゼロパディングなしでフォーマットします

Pythonで小数点以下の桁数をフォーマットする必要があります。好ましくは、浮動小数点値は常に少なくとも開始0と小数点以下1桁を示す必要があります。例:

Input: 0
Output: 0.0

小数点以下の桁数が多い値は、4になるまで、引き続き表示されます。そう:

Input: 65.53
Output: 65.53

Input: 40.355435
Output: 40.3554

{0.4f}を使用して小数点以下4桁まで印刷できることはわかっていますが、不要な0が埋め込まれます。特定の小数点以下の桁数まで印刷するように指示するフォーマットコードはありますが、データがない場合は空白のままにしますか? C#は次のような方法でこれを実現すると思います。

floatValue.ToString("0.0###")

#記号は、空白のままにできる場所を表します。

19
KChaloux

求めているものは、round関数などの丸め方法で対処し、浮動小数点数が文字列表現で自然に表示されるようにする必要があります。

>>> round(65.53, 4)
'65.53'
>>> round(40.355435, 4)
'40.3554'
>>> round(0, 4)
'0.0'
19
Boud

申し訳ありませんが、私ができる最善のこと:

' {:0.4f}'.format(1./2.).rstrip('0')

修正済み:

ff=1./2.
' {:0.4f}'.format(ff).rstrip('0')+'0'[0:(ff%1==0)]
3
f p
>>> def pad(float, front = 0, end = 4):
    s = '%%%s.%sf' % (front, end) % float
    i = len(s)
    while i > 0 and s[i - 1] == '0':
        i-= 1
    if s[i - 1] == '.' and len(s) > i:
        i+= 1 # for 0.0
    return s[:i] + ' ' * (len(s) - i)

>>> pad(0, 3, 4)
'0.0   '
>>> pad(65.53, 3, 4)
'65.53  '
>>> pad(40.355435, 3, 4)
'40.3554'
0
User