On 30/09/2018 16:26, David Mertz wrote: > On Sun, Sep 30, 2018 at 11:17 AM Steve Barnes <gadgetst...@live.co.uk > <mailto:gadgetst...@live.co.uk>> wrote: > > Note that my statements above had a single = i.e. > float(NaNAwareInt('nan')) produces float('nan'), etc., as does: > > In [42]: nan = decimal.Decimal('nan') > In [43]: decimal.Decimal(nan) > Out[43]: Decimal('NaN') > In [44]: float(nan) > Out[44]: nan > > > I think this explanation is still a little confusing. I take it what > you're getting at is that a "NaN" of any particular type (float, > Decimal, complex, NanAwareInt) should be a perfectly good initializer to > create a NaN of a different type using its constructor. > > I think that is sensible (not sure about complex). Currently we have: > > >>> complex(nan) > (nan+0j) > >>> float(complex('nan')) > Traceback (most recent call last): > File "<ipython-input-39-069ef735716e>", line 1, in <module> > float(complex('nan')) > TypeError: can't convert complex to float > > >>> complex(float('nan')) > (nan+0j) > >>> float(complex('nan')) > Traceback (most recent call last): > File "<ipython-input-41-069ef735716e>", line 1, in <module> > float(complex('nan')) > TypeError: can't convert complex to float > > >>> from decimal import Decimal > >>> Decimal('nan') > Decimal('NaN') > >>> float(Decimal('nan')) > nan > >>> Decimal(float('nan')) > Decimal('NaN') > >>> complex(Decimal('nan')) > (nan+0j) > >>> Decimal(complex('nan')) > Traceback (most recent call last): > File "<ipython-input-47-f48726d59102>", line 1, in <module> > Decimal(complex('nan')) > TypeError: conversion from complex to Decimal is not supported > > > I don't think we can change the "cast-from-complex" behavior... even > though I think it maybe should have been different from the start. > No complex can be converted to float without accessing either the real or imag component.
In [51]: cn=complex(4, float('nan')) In [52]: cn Out[52]: (4+nanj) In [53]: cn.real Out[53]: 4.0 In [54]: cn.imag Out[54]: nan In [55]: float(cn.imag) Out[55]: nan -- Steve (Gadget) Barnes Any opinions in this message are my personal opinions and do not reflect those of my employer. --- This email has been checked for viruses by AVG. https://www.avg.com _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/