# [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

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

```