[Python-Dev] Decimal data type issues
Batista, Facundo
FBatista at uniFON.com.ar
Tue Apr 13 16:15:51 EDT 2004
[Bob Ippolito]
#- >>> hash(float(1.0)) == hash(1) == hash(1L)
#- True
#-
#- Since this is already true, hash(Decimal.from_float(1.0)),
#- hash(Decimal(1)), hash(Decimal(1L)), hash(Decimal('1.0')),
#- hash(Decimal('1')), hash(Decimal(u'1.0')), etc. better be equal as
#- well, whatever that takes.
#-
#- As far as arbitrary floats hashing equally, I don't really care, but
#- the simple ones definitely should. Hopefully at some point, "float
#- constants" (as in coming from source code or user input) in
#- Python will
#- actually be Decimal representations, so you don't lose
#- precision until
#- you ask for it.
I agree. The detail is that the "simple ones" means the same Decimal that
the ones constructed from ints:
>>> Decimal.from_float(1.0)
Decimal( (0, (1,), 0L) )
>>> Decimal(1)
Decimal( (0, (1,), 0) )
>>> hash(Decimal.Decimal(1))
1
So, you'll *always* have the same hash there.
Regarding user input, treating them as strings,
>>> Decimal('1')
Decimal( (0, (1,), 0) )
>>> hash('1')
1977051568
There, you won't have the same hash that the string. But I don't think we
need this as long as you can not compare Decimal with strings...
. Facundo
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
ADVERTENCIA
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/20040413/1acbb44d/attachment.html
More information about the Python-Dev
mailing list