[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