Método para convertir un número int o float a un string con formato de moneda y separación de miles en Python.
def set_moneda(num, simbolo="US$", n_decimales=2):
"""Convierte el numero en un string en formato moneda
set_moneda(45924.457, 'RD$', 2) --> 'RD$ 45,924.46'
"""
# Redondea el número a los decimales indicados
num = round(num, n_decimales)
# Convierte el número a string y separa la parte entera de la decimal
num, dec = str(num).split(".")
# Completa los decimales con ceros si es necesario
dec += "0" * (n_decimales - len(dec))
# Formatea el número con comas para los miles
num = "{:,}".format(int(num))
# Si el número es negativo, añade el signo al principio
if num[0] == "-":
num = "-{}".format(num[1:])
# Si no se especifican decimales, retorna un número entero
if n_decimales == 0:
return "{} {}".format(simbolo, num)
return "{} {}.{}".format(simbolo, num, dec)
# Ejemplo de uso
print(set_moneda(45924.457, "RD$", 2))