Python formatear precio

1 minuto

Python

Independientemente del lenguaje, es bastante común formatear un precio de un formato familiar para los usuarios. Hay diferentes arreglos que siempre deben realizarse. Por ejemplo, mostrar con una coma en lugar de un punto o mostrar 2 decimales independientemente de si contiene un decimal.

Algunas transformaciones deseadas pueden ser:

1.0 -> 1

1.5 -> 1,50

2.03 -> 2,03

¡Si!, puede darse el caso que no tengamos decimales pero al estar en formato float nos imprima un feo .0 al final.

Para solucionarlo debemos aplicar diferentes técnicas.

  1. Saber si contiene un .0 en lugar de un decimal mayor. Podemos comprobar el resto al dividir entre 1 con numero % 1 == 0. En ese caso convertiremos el tipo a int.
  2. Limitar los decimales a 2. Utilizaremos "%.2f" % numero.
  3. Cambiar el punto por una coma. Si convertimos a un string dispondremos de la función replace.

Todo unido quedaría unificado en el siguiente ejemplo.

def format_price(price):
    """Format price in the correct way
       Example:
        1.0 -> 1
        1.5 -> 1,50
        2.03 -> 2,03
    """
    return str("%.2f" % price if price % 1 != 0 else int(price)).replace(
           ".", ","
        )

Para versiones 3.8+ de Python podéis usar una versión tipada para mayor seguridad.

def format_price(price: float|int) -> str:
    """Format price in the correct way
       Example:
        1.0 -> 1
        1.5 -> 1,50
        2.03 -> 2,03
    """
    return str("%.2f" % price if price % 1 != 0 else int(price)).replace(
           ".", ","
        )

Espero que os sea de ayuda.

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me ayudas?

No te sientas obligado a realizarme una donación, pero cada aportación me ayuda a mantener el sitio en activo para que continúe existiendo y me motiva a continuar creando nuevo contenido.

Comprame un café
Pulsa sobre la imagen
  • 1 café: Se mantiene el dominio durante 4 meses.
  • 2 cafés: Se paga 1 mes de servidor.
  • 3 cafés: Se cubre 1 mes de Black box.

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...