[Python-Dev] Re: Decimal data type issues
Bob Ippolito
bob at redivi.com
Tue Apr 13 17:13:22 EDT 2004
On Apr 13, 2004, at 4:34 PM, Paul Moore wrote:
> "Batista, Facundo" <FBatista at uniFON.com.ar> writes:
>
> [...]
>
>> Actually, imposing the limit means more code and complexity, and I
>> don't
>> find any benefit. But as I answered to Paul, I'm searching for
>> community
>> agreement before changing functionality that I found in the
>> implementation
>
> [...]
>
>> So, while Decimal(25) == 25 is True, hash(Decimal(25)) should be
>> equal to
>> hash(25).
>>
>> The detail is that you can NOT compare Decimal to floats or strings,
>> so
>> maybe we should not worry about them to give the same hashes.
>>
>> I'm OK to make hash(int or long) == hash(Decimal(int or long)). But
>> only to
>> int or long, not float nor string.
>>
>> Do you agree?
>
> So far, I've found your instincts to be pretty good. I'd say
>
> 1. Remove the limits.
> 2. Make hashes the same for int/long, but not str/float.
Make hash(Decimal('123.1')) == hash(Decimal('123.1')) .. there is no
reason not to. What's the point of having a Decimal type if the only
way to get an accurate representation of a non-integer is to do some
garbage like Decimal(1231)/Decimal(10)?
hash(float(1.0)) == hash(Decimal(1)) comes for free, because
hash(float(1.0)) == hash(1). For the few other non-integer numbers
that can be accurately represented as floating point, it might make
sense to keep the same property? Though I suppose that is pretty
what-the-heck-does-C-do specific, so I wouldn't blame anyone if this
property couldn't be maintained.
> 3. While I'm at it, I'm OK with the names you suggest for the 3 extra
> functions.
-bob
More information about the Python-Dev
mailing list