[pyar] Punto en miles y millones
Wuelfhis Asuaje
wasuaje en hotmail.com
Jue Mayo 12 17:11:12 ART 2011
> Message: 1
> Date: Thu, 12 May 2011 11:50:46 -0400
> From: Wuelfhis Asuaje <wasuaje en hotmail.com>
> Subject: Re: [pyar] Resumen de pyar, Vol 15, Envío 63
> To: Pytho Argentina <pyar en python.org.ar>
> Message-ID: <BAY155-w231E12E5BEE09B252B52A5B1890 en phx.gbl>
> Content-Type: text/plain; charset="iso-8859-1"
>
>
>
>
> >
> > Message: 1
> > Date: Thu, 12 May 2011 10:43:59 -0300
> > From: Facundo Batista <facundobatista en gmail.com>
> > Subject: Re: [pyar] Punto en miles y millones
> > To: Python Argentina <pyar en python.org.ar>
> > Message-ID: <BANLkTinGtriSi3Yt=3RH1GTXhU1bgKORcA en mail.gmail.com>
> > Content-Type: text/plain; charset=ISO-8859-1
> >
> > 2011/5/12 Ignacio López <lopezignacio en gmail.com>:
> >
> > > Hola gente, soy absolutamente nuevo en python y en la lista. Estoy
> > > intentando formatear un string de números enteros y agregarle los puntos en
> > > los miles y millones. Osea aplicarle una mascara "###.###.###".
> >
> > Mirá la primer receta acá:
> >
> > http://docs.python.org/library/decimal.html#recipes
> >
> > Slds.
> >
> > --
> > . Facundo
> >
> > Blog: http://www.taniquetil.com.ar/plog/
> > PyAr: http://www.python.org/ar/
>
> Me van a disculpar los Pythoneros pero esta clase gigante comparado con un simple
>
> echo numberformat(123456789,0,'.',' ',4); //resultado = 1 2345 6789
>
>
> Dejandonos muy atrás en cuanto a poder del lenguaje, ,usabilidad, practicidad y RAD. De paso haciendo muy dificil el desarrollo de aplicaciones de tipo financiera, contable, caja banco ,etc.
>
> Que piensan?
>
> Aqui el "Recipe que recomiendan" (de terror)
>
> def moneyfmt(value, places=2, curr='', sep=',', dp='.',
> pos='', neg='-', trailneg=''):
> """Convert Decimal to a money formatted string.
>
> places: required number of places after the decimal point
> curr: optional currency symbol before the sign (may be blank)
> sep: optional grouping separator (comma, period, space, or blank)
> dp: decimal point indicator (comma or period)
> only specify as blank when places is zero
> pos: optional sign for positive numbers: '+', space or blank
> neg: optional sign for negative numbers: '-', '(', space or blank
> trailneg:optional trailing minus indicator: '-', ')', space or blank
>
> >>> d = Decimal('-1234567.8901')
> >>> moneyfmt(d, curr='$')
> '-$1,234,567.89'
> >>> moneyfmt(d, places=0, sep='.', dp='', neg='', trailneg='-')
> '1.234.568-'
> >>> moneyfmt(d, curr='$', neg='(', trailneg=')')
> '($1,234,567.89)'
> >>> moneyfmt(Decimal(123456789), sep=' ')
> '123 456 789.00'
> >>> moneyfmt(Decimal('-0.02'), neg='<', trailneg='>')
> '<0.02>'
>
> """
> q = Decimal(10) ** -places # 2 places --> '0.01'
> sign, digits, exp = value.quantize(q).as_tuple()
> result = []
> digits = map(str, digits)
> build, next = result.append, digits.pop
> if sign:
> build(trailneg)
> for i in range(places):
> build(next() if digits else '0')
> 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))
>
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110512/3dc6e758/attachment-0001.htm>
>
> es que efectivamente si haces una aplicacion financiera o que
> involucra plata y lo haces con float ahi si que es de terror..
>
> decimal implementa un estandar internacional[1] que permite
> representar números decimales de precisión arbitraria sin tener los
> famosos problemas de representación
>
> cualquier lenguaje se queda muy atras si queres usar floats para
> representar esas cosas.
>
> RAD de rapid application development? no entendi esa referencia.
>
>
> lectura recomendada:
> http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html
Hago referencia a que ya no seria R(apido)AD con algo asi :-)
Y tengo muchos años desarrollando y
>>>intentando formatear un string de números enteros y agregarle los puntos en
>>> los miles y millones. Osea aplicarle una mascara "###.###.###".
Es algo que se necesita en casi cualquier aplicación
Y si, necesitas decimales para datos de caja,banco,contabilidad,auxiliares contables (si no alguien se va a enriquecer con esos decimales sobrantes)
Claro el amigo Facundo habla de un entero en el ejemplo, pero yo lo extrapolé a cuando los numeros se hagan complejos !!!
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110512/f84fe68c/attachment.html>
More information about the pyar
mailing list