Convertir decimal a formato monetario python 3
Convertir un decimal a un formato monetario que se desee
La siguiente función sacada de la documentación de python y utilizando python 3.3.
from decimal import * def moneyfmt(value, places=2, curr='', sep=',', dp='.', pos='', neg='-', trailneg=''): q = Decimal(10) ** -places # 2 places --> '0.01' sign, digits, exp = value.quantize(q).as_tuple() result = [] digits = list(map(str, digits)) build, next = result.append, digits.pop if sign: build(trailneg) for i in range(places): build(next() if digits else '0') if places: build(dp) if not digits: build('0') i = 0 while digits: build(next()) i += 1 if i == 3 and digits: i = 0 build(sep) build(curr) build(neg if sign else pos) return ''.join(reversed(result))Con tan solo pasarle el decimal a converit, la fucnion devuelve un str, con el formato $1.000.00.
>>>moneyfmt(Decimal('1000000.00')) '1,000,000.00'Si le pasamos los datos como la cantidad de centavos por defecto es '2', el signo de pesos dolar o euro por defecto es '$', el tipo de separador para los ciento y miles '.'
>>> moneyfmt(Decimal('1000000.00'), 2, '$', ',') '$1,000,000.00'Otros parámetros como el separador de los centavos por defecto es ',' el carácter si el decimal es positivo por defecto '', el carácter si es negativo por defecto es '-' y el carácter final en tal caso que sea negativo.
>>> moneyfmt(Decimal('1000000.00'), 2, '$', ',', ',', '+', '(', ')' ) '+$1,000,000,00' >>> moneyfmt(Decimal('-1000000.00'), 2, '$', ',', ',', '+', '(', ')' ) '($1,000,000,00)'Fuente: http://docs.python.org/3.3/library/decimal.html#recipes