[pyar] Decimal: limitar digitos despues de la coma

Manuel Argüelles manu.argue en gmail.com
Mar Feb 1 15:00:44 ART 2011


El día 31 de enero de 2011 21:14, Facundo Batista
<facundobatista en gmail.com> escribió:
> 2011/1/31 Manuel Argüelles <manu.argue en gmail.com>:
>
>>> Limitar a nivel almacenamiento o a nivel impresión?
>>>
>>> ...
>>> In [9]: '%.2f' % d
>>> Out[9]: '0.13'
>>>
>>> Eso sirve? Suerte, Naty.
>
>>
>> Gracias por las respuestas!
>> No me exprese bien, lo que quiero es a nivel impresion.. con el
>> formateo de strings va!
>
> Ojo, que más allá que quieras dos dígitos en la impresión, es crítico
> que esos dos dígitos sean los correctos.
>
> Por ejemplo, tener 0.1258932587 y que muestre 0.13 está mal si querés
> que redondee para abajo.
>
> Entonces, lo que realmente deberías hacer es ir a los dos dígitos
> usando decimal, y especificando el redondeado que vos querés [0]:
>
>>>> import decimal
>>>> d = decimal.Decimal("0.1258932587")
>>>> d.quantize(decimal.Decimal('.01'))
> Decimal('0.13')
>>>> c = decimal.getcontext()
>>>> c.rounding = decimal.ROUND_DOWN
>>>> d.quantize(decimal.Decimal('.01'))
> Decimal('0.12')
>>>> print d.quantize(decimal.Decimal('.01'))
> 0.12
>
> Slds.
>
> [0] Si no sabés qué redondeo querés... mejor averigualo, porque
> depende mucho del contexto en que estés trabajando. Tené en cuenta que
> hay *siete* tipos de redondeo distintos (ROUND_05UP, ROUND_FLOOR,
> ROUND_HALF_UP, ROUND_CEILING, ROUND_HALF_DOWN, ROUND_UP, ROUND_DOWN,
> ROUND_HALF_EVEN).
>
> --
> .    Facundo
>
> Blog: http://www.taniquetil.com.ar/plog/
> PyAr: http://www.python.org/ar/
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>

Gracias por la aclaración Facundo! No sabia que existian tantos tipos
de redondeo :)

Saludos

-- 
Manuel



More information about the pyar mailing list