
On 30/09/2018 16:26, David Mertz wrote:
On Sun, Sep 30, 2018 at 11:17 AM Steve Barnes <gadgetsteve@live.co.uk <mailto:gadgetsteve@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