[pyar] Decimal: limitar digitos despues de la coma

Facundo Batista facundobatista en gmail.com
Lun Ene 31 21:14:56 ART 2011


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/



More information about the pyar mailing list