usar truncar solo mostrar mas imprimir formateo float decimales con como python string-formatting

python - truncar - ¿Cómo puedo formatear un decimal para mostrar siempre 2 decimales?



truncar a 2 decimales python (8)

.format es una forma más legible de manejar el formato variable:

''{:.{prec}f}''.format(26.034, prec=2)

Quiero mostrar:

49 como 49.00

y:

54.9 como 54.90

Independientemente de la longitud del decimal o si hay decimales, me gustaría mostrar un Decimal con 2 decimales, y me gustaría hacerlo de una manera eficiente. El objetivo es mostrar los valores monetarios.

por ejemplo, 4898489.00


Debe usar las nuevas especificaciones de formato para definir cómo debe representarse su valor:

>>> from math import pi # pi ~ 3.141592653589793 >>> ''{0:.2f}''.format(pi) ''3.14''

La documentación puede ser un poco obtusa a veces, por lo que recomiendo las siguientes referencias más fáciles de leer:

Python 3.6 introdujo la interpolación de cadenas literales (también conocida como cadenas de caracteres f) por lo que ahora puede escribir lo anterior de manera más sucinta como:

>>> f''{pi:.2f}'' ''3.14''


La sección Operaciones de formato de cadena de la documentación de Python contiene la respuesta que está buscando. En breve:

"%0.2f" % (num,)

Algunos ejemplos:

>>> "%0.2f" % 10 ''10.00'' >>> "%0.2f" % 1000 ''1000.00'' >>> "%0.2f" % 10.1 ''10.10'' >>> "%0.2f" % 10.120 ''10.12'' >>> "%0.2f" % 10.126 ''10.13''


Puede usar el operador de formateo de cadena de la siguiente manera:

num = 49 x = "%.2f" % num # x is now the string "49.00"

No estoy seguro de lo que quiere decir con "eficiente": es casi seguro que no es el cuello de botella de su aplicación. Si su programa se está ejecutando lentamente, píntelo primero para encontrar los puntos calientes y luego optimícelos.


Supongo que probablemente esté usando los objetos Decimal() del módulo decimal . (Si necesita exactamente dos dígitos de precisión más allá del punto decimal con números arbitrariamente grandes, definitivamente debe ser así, y eso es lo que sugiere el título de su pregunta ...)

Si es así, la sección de Preguntas Frecuentes Decimal de los documentos tiene un par pregunta / respuesta que puede ser útil para usted:

P. En una aplicación de punto fijo con dos decimales, algunas entradas tienen muchos lugares y deben redondearse. Se supone que otros no tienen dígitos en exceso y necesitan ser validados. ¿Qué métodos deberían usarse?

A. El método quantize () se redondea a un número fijo de decimales. Si se establece la trampa inexacta, también es útil para la validación:

>>> TWOPLACES = Decimal(10) ** -2 # same as Decimal(''0.01'') >>> # Round to two places >>> Decimal(''3.214'').quantize(TWOPLACES) Decimal(''3.21'') >>> # Validate that a number does not exceed two places >>> Decimal(''3.21'').quantize(TWOPLACES, context=Context(traps=[Inexact])) Decimal(''3.21'') >>> Decimal(''3.214'').quantize(TWOPLACES, context=Context(traps=[Inexact])) Traceback (most recent call last): ... Inexact: None

La siguiente pregunta dice

P. Una vez que tengo entradas de dos lugares válidas, ¿cómo mantengo esa invariante a través de una aplicación?

Si necesita la respuesta a eso (junto con mucha otra información útil), consulte Decimal() . Además, si mantiene sus Decimal con dos dígitos de precisión más allá del punto decimal (es decir, tanta precisión como sea necesario para mantener todos los dígitos a la izquierda del punto decimal y dos a la derecha y no más ...) , luego convertirlos a cadenas con str funcionará bien:

str(Decimal(''10'')) # -> ''10'' str(Decimal(''10.00'')) # -> ''10.00'' str(Decimal(''10.000'')) # -> ''10.000''


qué pasa

print round(20.2564567 , 2) >>>>>>> 20.25 print round(20.2564567 , 4) >>>>>>> 20.2564


si tiene múltiples parámetros, puede usar

print(''some string {0:.2f} & {1:.2f}''.format(1.1234,2.345)) >>> some string 1.12 & 2.35


>>> print "{:.2f}".format(1.123456) 1.12

Puede cambiar 2 en 2f a cualquier número de decimales que quiera mostrar.

EDITAR:

Desde Python3.6 , esto se traduce en:

>>> print(f"{1.1234:.2f}") 1.12