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
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
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
1.018847e+10
5.565719
3.539000
22.152261
0.000000
15.963845
0.284024
7.580967
24.346915
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))
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)