web-dev-qa-db-fra.com

Comment faire des flotteurs au format Python avec une certaine quantité de chiffres significatifs?

Je veux que mes nombres de sortie Python (2.4.3) aient un certain format. Plus précisément, si le nombre est une décimale de fin avec <= 6 chiffres significatifs, montrez-le tout. Cependant, s'il a> 6 chiffres significatifs, puis n'affiche que 6 chiffres significatifs.

"A" montre comment Python écrit les flottants. "B" montre comment je veux les écrire. Comment puis-je faire Python formater mes nombres de cette façon) ?

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

Vous aurez besoin du modificateur g pour format qui supprime des zéros insignifiants;

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

Désolé, ma mise à jour inclut également le fait que je suis limité à utiliser Python 2.4.3, qui n'a pas la fonction format ().

Les spécificateurs de format fonctionnent même sans la fonction .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
Joachim Isaksson

essayez de cette façon

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)

pour la version inférieure de python

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

production

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

Il existe un moyen de conserver les zéros de fin afin qu'il affiche systématiquement le nombre de chiffres significatifs. Pas exactement ce qu'OP voulait, mais probablement utile à beaucoup.

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

Production

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

Notez que cela ne fonctionnera qu'avec la fonction format et non avec % opérateur.

Référence: an fonctionnalité non documentée (à partir de 2019)

1
jadelord