Le 15 mars 2019 à 03:49:19, Steven D'Aprano
(st...@pearwood.info(mailto:st...@pearwood.info)) a écrit:

> On Wed, Mar 13, 2019 at 03:21:31AM -0700, Rémi Lapeyre wrote:
>
> > When __index__ is defined it means that there is a lossless conversion
> > to int possible. In this case, this means a lossless conversion to
> > float and complex is also possible
>
> That's not correct:
>
> py> n = 2**64 + 1
> py> n == int(float(n))
> False

Thanks, I should have thought of that. Do you think __index__ should
only define
__int__ then?


> Python floats (C doubles) can lose digits when converting from ints
> over 2**53 or so.
>
>
> > (with the exception of overflows
> > but anyone doing float(var) should expect them).
>
> I don't. I expect float(var) to overflow to infinity, if it is going to
> overflow, and always forget that it can raise.
>
>
> py> float("9e9999")
> inf
>
> py> float(str(9*10**9999))
> inf
>
> But:
>
> py> float(9*10**9999)
> Traceback (most recent call last):
> File "", line 1, in
> OverflowError: int too large to convert to float
>
> This never fails to surprise me.
>
>
>
>
> --
> Steven
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: 
> https://mail.python.org/mailman/options/python-dev/remi.lapeyre%40henki.fr
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to