Tengo una carroza: 1.2333333

¿Cómo lo cambio a un número de dos decimales con una coma como separador de coma decimal, por ejemplo, 1,23?

17
Hobhouse 7 oct. 2009 a las 13:06

3 respuestas

La mejor respuesta

Para obtener dos decimales, use

'%.2f' % 1.2333333

Para obtener una coma, use replace():

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

Una segunda opción sería cambiar la ubicación a algún lugar que use una coma y luego usar locale.format():

locale.setlocale(locale.LC_ALL, 'FR')
locale.format('%.2f', 1.2333333)
15
Aaron Digulla 7 oct. 2009 a las 10:38

Si no quiere meterse con la configuración regional, puede, por supuesto, formatear 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).

2
unwind 7 oct. 2009 a las 09:29

El módulo local puede ayudarlo a leer y escribir números en el formato local.

>>> 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
8
u0b34a0f6ae 7 oct. 2009 a las 10:03