[Python-ideas] Python Numbers as Human Concept Decimal System

Chris Angelico rosuav at gmail.com
Sat Mar 8 05:00:05 CET 2014


On Sat, Mar 8, 2014 at 2:55 PM, Paul Du Bois <paul.dubois at gmail.com> wrote:
> On Fri, Mar 7, 2014 at 6:15 PM, Guido van Rossum <guido at python.org> wrote:
>>
>> Or, Decimal(repr(some_float)), which DWIM.
>
>
> Because I haven't seen anyone else bring this up, using a non-exact
> conversion breaks the invariant "Decimal(f)==f".
>
> There are so many pairs of numeric types that break that invariant that it
> might not be a big deal; but in all other cases the invariant is broken
> because it is theoretically impossible.
>
> from decimal import Decimal
> f = 2.2
> print(Decimal(f)==f)
> print(Decimal(repr(f))==f)

How is Decimal==float implemented? Is it by calling Decimal(rhs) and
then comparing? If so, changing how Decimal(float) works won't break
the invariant, as it'll make the same conversion each time.

ChrisA


More information about the Python-ideas mailing list