[Python-Dev] Adventures with Decimal

Guido van Rossum gvanrossum at gmail.com
Sat May 21 01:13:16 CEST 2005


> [Guido]
> > It looks like if you pass in a context, the Decimal constructor
> > still ignores that context:
> >
> > >>> import decimal as d
> > >>> d.getcontext().prec = 4
> > >>> d.Decimal("1.2345678901234567890123456789012345678901234567890000",
> > d.getcontext())
> > Decimal("1.2345678901234567890123456789012345678901234567890000")
> > >>>
> >
> > I think this is contrary to what some here have claimed (that you
> > could pass an explicit context to cause it to round according to the
> > context's precision).

[Tim]
> I think Michael Chermside said that's how a particular Java
> implementation works.
> 
> Python's Decimal constructor accepts a context argument, but the only
> use made of it is to possibly signal a ConversionSyntax condition.

You know that, but Raymond seems confused.  From one of his posts (point (k)):

"Throughout the implementation, the code calls the Decimal
constructor to create intermediate values.  Every one of those calls
would need to be changed to specify a context."

But passing a context doesn't help for obtaining the desired precision.

PS I also asked Cowlishaw and he said he would ponder it over the
weekend. Maybe Raymond can mail him too. ;-)

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-Dev mailing list