2009-09-15 14 views
15

Je veux ajouter des valeurs en pourcentage pour qu'il y ait toujours 3 unités avant la décimale. Avec ints, je pourrais utiliser '% 03d' - y a-t-il un équivalent pour les flotteurs?Pad flotteurs python

'% .3f' fonctionne après la décimale, mais '% 03f' ne fait rien.

Répondre

33

« % 03.1f » fonctionne (1 peut être un nombre quelconque, ou une chaîne vide):

>>> "%06.2f"%3.3 
'003.30' 

>>> "%04.f"%3.2 
'0003' 

On notera que la largeur de champ comprend la virgule et de chiffres après la virgule.

+3

Si la valeur est négative, le premier « - 'consommera l'un des compteurs de largeur de champ - "% 06.2f"% -3.3 donne "-03.30", donc si vous Si vous avez 3 chiffres même s'ils sont négatifs, vous devrez en ajouter un de plus à la largeur du champ. Vous pouvez le faire en utilisant la valeur '*' fieldwidth, et passer une valeur calculée: value = -3.3; print "% 0 * .2f"% (6+ (valeur <0), valeur) – PaulMcG

+0

Voici ce que @PaulMcGuire voulait dire, mais en utilisant un 'format':' value = -3.3; print "{t: 0 {format} .2f}". format (format = 6 + (valeur <0), t = valeur) '. – Adobe

7

Vous pouvez également utiliser zfill.

str(3.3).zfill(5) 
'003.3' 
+0

Cette réponse est plus Python que la mise en forme de chaîne. – refi64

4

Alternativement, si vous souhaitez utiliser .format:

   {:6.1f} 
       ↑ ↑ 
       | | 
# digits to pad | | # of decimal places to display 

Copypasta: {:6.1f}

Exemple d'utilisation:

'Num: {:6.1f}'.format(number)