how to convert from Decimal('1.23456789') to Decimal('1.234')

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Mon Mar 23 11:48:24 CET 2009


On Mon, 23 Mar 2009 01:45:53 -0700, Mensanator wrote:

>> but you can create a helper
>> function very easily:
>>
>> def round(dec, places, rounding=decimal.ROUND_HALF_UP): � � return
>> dec.quantize(decimal.Decimal(str(10**-places)), rounding)
> 
> Still ugly. I would do this:
> 
>>>> a = Decimal('1.23456789')
> 
>>>> for i in xrange(1,6):
> 	print Context.create_decimal(Context(i,ROUND_DOWN),a)

Well, that's hardly any less ugly.

And it also gives different results to my function: my function rounds to 
<places> decimal places, yours to <i> digits. Very different things.


-- 
Steven



More information about the Python-list mailing list