27

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###")

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

4

4 に答える 4

32

あなたが求めていることは、組み込みround関数のような丸め方法によって対処されるべきです。次に、数値がその表現floatとともに自然に表示されるようにします。string

>>> round(65.53, 4)  # num decimal <= precision, do nothing
'65.53'
>>> round(40.355435, 4)  # num decimal > precision, round
'40.3554'
>>> round(0, 4)  # note: converts int to float
'0.0'
于 2012-05-08T20:07:04.353 に答える
8

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

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

訂正:

ff=1./2.
' {:0.4f}'.format(ff).rstrip('0')+'0'[0:(ff%1==0)]
于 2012-05-08T19:24:56.317 に答える
0
>>> 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'
于 2012-05-08T19:45:41.227 に答える