On Mar 23, 5:48 am, Steven D'Aprano <st...@remove-this- cybersource.com.au> wrote: > 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.
I wouldn't say so since there are no strings attached. Didn't the OP specifically ask for a solution that didn't involve strings? > > And it also gives different results to my function: my function rounds to > <places> decimal places, yours to <i> digits. Very different things. Yeah, I know all about that. I work in Environmental Remediation. That's real science, where rounding to decimal places is strictly forbidden, significant digits must be preserved. That means rounding to digits. Do you know what kind of hoops I have to jump through to get Access or Excel to round properly when doing unit conversion? Surely you're not so maive that you think dividing by 1000 simply moves the decimal point three places? > > -- > Steven -- http://mail.python.org/mailman/listinfo/python-list