2011-04-06 28 views
7

Tengo el siguiente código simple repetitivo repetido varias veces que me gustaría hacer una función para:¿Cómo se especifica la precisión decimal de coma flotante de la variable?

for i in range(10): 
    id = "some id string looked up in dict" 
    val = 63.4568900932840928 # some floating point number in dict corresponding to "id" 
    tabStr += '%-15s = %6.1f\n' % (id,val) 

Quiero ser capaz de llamar a esta función: def printStr(precision)
Cuando preformas el código anterior y vuelve tabStr con val a precision puntos decimales.

Por ejemplo: printStr(3)
volvería 63.457 para val en tabStr.

¿Alguna idea de cómo lograr este tipo de funcionalidad?

Respuesta

24
tabStr += '%-15s = %6.*f\n' % (id, i, val) 

donde i es el número de decimales.


Por cierto, en la reciente Python donde .format() ha superado %, podría utilizar

"{0:<15} = {2:6.{1}f}".format(id, i, val) 

para la misma tarea.

O, con nombres de campo para mayor claridad:

"{id:<15} = {val:6.{i}f}".format(id=id, i=i, val=val) 

Si está utilizando Python 3.6 o superior, simplemente podría utilizar f-strings:

f"{id:<15} = {val:6.{i}f}" 
+0

Gracias por la ayuda! – Jeremy

+0

@Jeremy Deberías aceptar la respuesta – michaelsnowden

0

Esto debería funcionar también

tabStr += '%-15s = ' % id + str(round(val, i)) 

donde i es la precisión requerida.

7

Sé que esto de una rosca de edad, pero hay una manera mucho más simple de hacer esto:

Prueba esto:

def printStr(FloatNumber, Precision): 
    return "%0.*f" % (Precision, FloatNumber) 
Cuestiones relacionadas