[Python-Dev] Decimal data type issues
Batista, Facundo
FBatista at uniFON.com.ar
Wed Apr 14 17:38:26 EDT 2004
[Ka-Ping Yee]
#- I agree with Tony. Having both Decimal() and
#- Decimal.from_string() work
#- in similar but subtly different ways seems likely to be
#- misunderstood.
Decimal(string) works the way we want/need/desire.
Decimal.from_string(string) works the way the documentation specify.
I think we can only change the way the former works or the name of the
latter.
#- I also think his last suggestion could provide a nice,
#- convenient solution
#- to the conversion-from-float issue, since it raises the same
#- question (a
#- method named "Decimal.from_float" doesn't explain how or why
#- it is different
#- from just constructing with a float).
You can NOT construct directly from a float. That's the difference.
#- So here's a more detailed suggestion. Suppose s = '12345',
#- f = 12.345,
#- the default context specifies a precision of 9 as given in
#- the PEP, and
#- c is a context object with a precision of 6.
#-
#- Then this: would yield this:
#-
#- Decimal(s) Decimal((0, (1, 2, 3, 4, 5), 0))
#- ...
#- Decimal(s, context=c) Decimal((0, (1, 2, 3, 4, 5, 0), -1))
#- ...
#- Decimal(f) Decimal((0, (1, 2, 3, 4, 5, 0, 0, 0, 0,
0,...
#- ...
The community agreed to not create directly from float. You have the
from_float() method instead.
Also, remember that the context doesn't affect the creation when you create
directly from string (only if you use from_string). Your example means to
change the behaviour of the creation when creating directly from string? And
when create directly from int or long?
#- (Do I assume correctly that there will be context objects
#- that wrap up
#- the precision and rounding mode, and there will be some sort
#- of interface
#- for getting and setting the current context?)
Yes. You can get the context with getcontext() and then change it
attributes.
. Facundo
More information about the Python-Dev
mailing list