2009-10-07 33 views
10

Tengo un flotante: 1.2333333¿Cómo cambio mi flotador en un número decimal doble con una coma como separador de punto decimal en python?

¿Cómo lo cambio en un número decimal doble con una coma como un separador de punto decimal, por ejemplo, 1,23?

+0

víctima: http://stackoverflow.com/questions/316238/python-float-to-decimal-conversion –

+0

@ Ólafur Waage - la materia local no está en http://stackoverflow.com/questions/ 316238/python-float-to-decimal-conversion –

Respuesta

8

Para obtener dos decimales, utilice

'%.2f' % 1.2333333 

Para obtener una coma, utilice replace():

('%.2f' % 1.2333333).replace('.', ',') 

Una segunda opción sería la de change the locale a un lugar que utiliza una coma y luego usar locale.format() :

locale.setlocale(locale.LC_ALL, 'FR') 
locale.format('%.2f', 1.2333333) 
+0

Esto es absolutamente incorrecto. el formateador de cadena ''% f "' normal no depende de la configuración regional. – u0b34a0f6ae

+0

A veces, es: https://bugs.webkit.org/show_bug.cgi?id=18994 He mejorado mi respuesta para evitar la ambigüedad. –

+0

@FlorianPilz: No con mi versión de Python y no [según la documentación] (https://docs.python.org/2/library/stdtypes.html#str.replace) –

1

Si no quiere meterse con la l ocale, por supuesto puede hacer el formateo usted mismo. Esto podría servir como punto de partida:

def formatFloat(value, decimals = 2, sep = ","): 
    return "%s%s%0*u" % (int(value), sep, decimals, (10 ** decimals) * (value - int(value))) 

Tenga en cuenta que esto siempre truncar la parte de fracción (es decir 1,04999 se imprimirá como 1,04).

7

El locale module puede ayudarlo a leer y escribir números en el formato de la configuración regional.

>>> import locale 
>>> locale.setlocale(locale.LC_ALL, "") 
'sv_SE.UTF-8' 
>>> locale.format("%f", 2.2) 
'2,200000' 
>>> locale.format("%g", 2.2) 
'2,2' 
>>> locale.atof("3,1415926") 
3.1415926000000001 
Cuestiones relacionadas