# [Python-Dev] PEP 327: Decimal Data Type

Batista, Facundo FBatista at uniFON.com.ar
Mon Feb 2 10:34:42 EST 2004

```Michael Chermside wrote:

#-         I think that we'd do even better to ommit the second
#- use. People who
#- really want to convert floats exactly can easily write
#- "Decimal(1.1, 60)". But
#- hardly anyone wants to convert floats exactly, while lots of
#- newbies would
#- forget to include the second parameter. I'd say just make
#- Decimal(someFloat)
#- raise a TypeError with a helpful message about how you need
#- that second
#- parameter when using floats.

I take this in consideration in another response.

#- Really, that's all I came up with. This is great, and I'm
#- looking forward to
#- using it. I would, though, be interested in a couple more
#- syntax-related
#- details:
#-     (a) What's the syntax for changing the context? I'd
#- think we'd want
#- a "pushDecimalContext()" and "popDecimalContext()" sort of
#- approach, since most
#- well-behaved routines will want to restore their caller's context.

You can save a copy of the context in a variable and then restore it. No
stack.

#- context? I don't
#- have any use cases, but it would seem peculiar not to provide it.

You do it to save it in a variable.

For example:

>>> from Decimal import *
>>> import copy
>>> c = getcontext()
>>> cc = copy.copy(c)
>>> d = Decimal(5.065253542)
>>> d
Decimal( (0, (5, 0, 6, 5, 2, 5, 3, 5, 4, 2), -9) )
>>> d + 1     # it will be rounded down
Decimal( (0, (6, 0, 6, 5, 2, 5, 3, 5, 4), -8L) )
>>> c.set_rounding('up')   # returns the old rounding
'half_even'
>>> d + 1     # it will be rounded up
Decimal( (0, (6, 0, 6, 5, 2, 5, 3, 5, 5), -8L) )
>>> setcontext(cc)
>>> d + 1
Decimal( (0, (6, 0, 6, 5, 2, 5, 3, 5, 4), -8L) )

One question: This kind of stuff, should be in the final documentation? And
in the final PEP?

#-     (c) Given a Decimal object, is there a straightforward
#- way to determine its
#- coefficient and exponent? Methods named .precision() and
#- .exponent() might do
#- the trick.

No. I think it's a good idea.

.	Facundo

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .

La información contenida en este mensaje y cualquier archivo anexo al mismo,
son para uso exclusivo del destinatario y pueden contener información
confidencial o propietaria, cuya divulgación es sancionada por la ley.

Si Ud. No es uno de los destinatarios consignados o la persona responsable
de hacer llegar este mensaje a los destinatarios consignados, no está
autorizado a divulgar, copiar, distribuir o retener información (o parte de
ella) contenida en este mensaje. Por favor notifíquenos respondiendo al
remitente, borre el mensaje original y borre las copias (impresas o grabadas
en cualquier medio magnético) que pueda haber realizado del mismo.

Todas las opiniones contenidas en este mail son propias del autor del
mensaje y no necesariamente coinciden con las de Telefónica Comunicaciones
Personales S.A. o alguna empresa asociada.

Los mensajes electrónicos pueden ser alterados, motivo por el cual
Telefónica Comunicaciones Personales S.A. no aceptará ninguna obligación
cualquiera sea el resultante de este mensaje.

Muchas Gracias.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-dev/attachments/20040202/bbc39174/attachment.html
```