[Python-Dev] Mixing float and Decimal -- thread reboot (original) (raw)
Steven D'Aprano steve at pearwood.info
Tue Mar 23 23:00:30 CET 2010
- Previous message: [Python-Dev] Mixing float and Decimal -- thread reboot
- Next message: [Python-Dev] Mixing float and Decimal -- thread reboot
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, 24 Mar 2010 05:04:37 am Mark Dickinson wrote:
On Tue, Mar 23, 2010 at 5:48 PM, Adam Olsen <rhamph at gmail.com> wrote: > a = Decimal('nan') > a != a > > They don't follow the behaviour required for being hashable.
What's this required behaviour? The only rule I'm aware of is that if a == b then hash(a) == hash(b). That's not violated here. Note that containment tests check identity before equality, so there's no problem with putting (float) nans in sets or dicts: >>> x = float('nan') >>> s = {x} >>> x in s True
As usual though, NANs are unintuitive:
d = {float('nan'): 1} d[float('nan')] = 2 d {nan: 1, nan: 2}
I suspect that's a feature, not a bug.
-- Steven D'Aprano
- Previous message: [Python-Dev] Mixing float and Decimal -- thread reboot
- Next message: [Python-Dev] Mixing float and Decimal -- thread reboot
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]