Comment formater un nombre flottant à une largeur fixe avec les exigences suivantes:
Par exemple:
% formatter something like '{:06}'
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]
for number in numbers:
print formatter.format(number)
La sortie serait comme
23.2300
0.1233
1.0000
4.2230
9887.2000
for x in numbers:
print "{:10.4f}".format(x)
empreintes
23.2300
0.1233
1.0000
4.2230
9887.2000
Le spécificateur de format entre accolades suit le syntaxe de chaîne de format Python . Plus précisément, dans ce cas, il comprend les parties suivantes:
format()
" - dans ce cas, la x
comme seul argument.10.4f
après les deux points est le spécification de format .f
désigne la notation en point fixe.10
est la largeur totale du champ en cours d'impression, complété par des espaces.4
est le nombre de chiffres après le point décimal.Cela fait quelques années que cette question n'a pas été résolue, mais à partir de Python 3.6 ( PEP498 ), vous pouvez utiliser le nouveau f-strings
:
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]
for number in numbers:
print(f'{number:9.4f}')
Impressions:
23.2300
0.1233
1.0000
4.2230
9887.2000
En python3 les travaux suivants:
>>> v=10.4
>>> print('% 6.2f' % v)
10.40
>>> print('% 12.1f' % v)
10.4
>>> print('%012.1f' % v)
0000000010.4
Voir Python 3.x syntaxe de chaîne de format :
IDLE 3.5.1
numbers = ['23.23', '.1233', '1', '4.223', '9887.2']
for x in numbers:
print('{0: >#016.4f}'. format(float(x)))
23.2300
0.1233
1.0000
4.2230
9887.2000
Vous pouvez aussi laisser un pavé avec des zéros. Par exemple, si vous voulez que number
ait une longueur de 9 caractères, complétée à gauche par des zéros, utilisez:
print('{:09.3f}'.format(number))
Ainsi, si number = 4.656
, le résultat est: 00004.656
Pour votre exemple, la sortie ressemblera à ceci:
numbers = [23.2300, 0.1233, 1.0000, 4.2230, 9887.2000]
for x in numbers:
print('{:010.4f}'.format(x))
impressions:
00023.2300
00000.1233
00001.0000
00004.2230
09887.2000
Cela peut être utile, par exemple, lorsque vous souhaitez répertorier correctement les noms de fichiers par ordre alphabétique. J'ai remarqué que dans certains systèmes Linux, le nombre est: 1,10,11, .. 2,20,21, ...
Ainsi, si vous souhaitez appliquer l'ordre numérique nécessaire aux noms de fichiers, vous devez laisser un pavé gauche avec le nombre de zéros approprié.
Dans Python 3.
GPA = 2.5
print(" %6.1f " % GPA)
6.1f
signifie qu'après les points, 1 chiffre indique que si vous imprimez 2 chiffres après les points, vous ne devez que %6.2f
tel que %6.3f
3 chiffres s'impriment après le point.