Comment formater un nombre flottant à une largeur fixe en Python

Comment formater un nombre flottant à une largeur fixe avec les exigences suivantes:

  1. Premier zéro si n
  2. ajouter le(s) zéro (s) décimal (s) pour remplir la largeur fixe
  3. tronquer les chiffres décimaux après la largeur fixe
  4. aligner toutes les décimales

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
212
demandé sur hobbes3 2012-01-17 00:07:54

5 réponses

for x in numbers:
    print "{:10.4f}".format(x)

Imprime

   23.2300
    0.1233
    1.0000
    4.2230
 9887.2000
340
répondu Sven Marnach 2012-01-16 20:10:38

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
25
répondu Scott Roberts 2015-05-26 04:19:30

Voir Python 3.x format chaîne syntaxe :

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
6
répondu readyleader 2017-02-01 01:50:27

En Python 3.

GPA = 2.5
print(" %6.1f " % GPA)

6.1f après les points 1 chiffres montrent si vous imprimez 2 chiffres après les points que vous devez seulement %6.2f tels que %6.3f, 3 chiffres, impression après le point.

0
répondu Usman Zia 2017-08-19 07:19:33

Il a été un peu le vôtre depuis que cela a été répondu, 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}')

Imprime:

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000
0
répondu artomason 2018-10-04 15:08:18