web-dev-qa-db-ja.com

Python特定の有効桁数のフォーマット浮動小数点を作成するには?

私はPython(2.4.3)出力数値に特定のフォーマットを持たせたい。具体的には、数値が有効数字6桁以下の終端小数である場合、すべてを表示する。有効数字が6桁を超える場合は、有効数字6桁のみを出力します。

「A」は、Pythonがフロートを書き込む方法を示します。「B」は、どのようにフロートを書き込むかを示します。どのようにPython ?

A:
10188469102.605597
5.5657188485
3.539
22.1522612479
0
15.9638450858
0.284024
7.58096703786
24.3469152383

B:
1.01885e+10
5.56572
3.539
22.1523
0
15.9638
0.284024
7.58097
24.3469
19
user1145925

gformat修飾子を追加すると、意味のないゼロが削除されます。

_>>> "{0:.6g}".format(5.5657188485)
'5.56572'
>>> "{0:.6g}".format(3.539)
'3.539'
_

申し訳ありませんが、この更新には、Python 2.4.3、これにはformat()関数がありません。

書式指定子は、.format()関数がなくても機能します。

_>>> for i in a:
...    print '%.6g' % (i,)
...
1.01885e+10
5.56572
3.539
22.1523
0
15.9638
0.284024
7.58097
24.3469
_
37

この方法を試してください

a=[10188469102.605597,5.5657188485,3.539,22.1522612479,0,15.9638450858,0.284024,7.58096703786,24.3469152383]

 for i in a:
    if i >100:
        print '{:.6e}'.format(i)
    else:
        print '{:.6f}'.format(i)

pythonの下位バージョン用

for i in a:
    if i >100:
        print '%6e'%i
    else:
        print '%6f'%i

出力

1.018847e+10
5.565719
3.539000
22.152261
0.000000
15.963845
0.284024
7.580967
24.346915
4
sundar nataraj

有効な桁数を一貫して表示するために、末尾のゼロを保持する方法があります。 OPが正確に望んでいたものではありませんが、おそらく多くの人にとって有用です。

a = [10188469102.605597,5.5657188485,3.539,22.1522612479,0,15.9638450858,0.284024,7.58096703786,24.3469152383]

for i in a:
    print("{:#.6g}".format(i))

出力

1.01885e+10
5.56572
3.53900
22.1523
0.00000
15.9638
0.284024
7.58097
24.3469

これはformat関数でのみ機能し、%演算子では機能しないことに注意してください。

参照: ドキュメント化されていない機能(2019年現在)

1
jadelord