2009-09-15 18 views
15

Quiero rellenar algunos valores de porcentaje para que siempre haya 3 unidades antes de la posición decimal. Con Ints podría usar '% 03d' - ¿hay un equivalente para flotadores?Parches flotantes de pitón

'% .3f' funciona después de la posición decimal pero '% 03f' no hace nada.

Respuesta

33

'% 03.1f' funciona (1 podría ser cualquier número o cadena vacía):

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

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

Tenga en cuenta que el ancho de campo incluye la decimal y los dígitos fraccionarios.

+3

Si el valor es negativo, el líder '- 'consumirá uno del recuento de ancho de campo - "% 06.2f"% -3.3 da "-03.30", por lo que si ust tiene 3 dígitos, incluso si es negativo, tendrá que agregar uno más al ancho del campo. Puede hacerlo usando el valor de campo '*' y pasar un valor calculado: value = -3.3; print "% 0 * .2f"% (6+ (valor <0), valor) – PaulMcG

+0

Esto es lo que @PaulMcGuire significaba, pero usando un 'format':' value = -3.3; imprima el formato "{t: 0 {format} .2f}". (formato = 6 + (valor <0), t = valor) '. – Adobe

7

También puede usar zfill ,.

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

Esta respuesta es más pitonica que el formateo de cadenas. – refi64

4

Alternativamente, si desea utilizar .format:

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

Copypasta: {:6.1f}

Ejemplo de uso:

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