make float(NA) return nan


- [ ] closes #xxxx (Replace xxxx with the Github issue number)
- [ ] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [ ] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

Cc @jorisvandenbossche  Thanks for the ping! 

I think we need to think through some actual use cases to see if returning NaN makes more sense or not (in the linked matplotlib PR, the issue is more that they got object dtype array, and so they (or in pandas) should ensure they convert to a float dtype, and then you don't run into a `float(pd.NA)` issue, since you already got floats)

I think the main reason to _not_ have this automatic conversion is that NaN and NA are inherently different (and they behave different in several operations, such as in boolean context, in comparisons, ...). 

 Sure, the issue still arises when using `np.asanyarray(ser)` though, as then you can't pass a `na_value` and it'll fail on `pd.NA`:
```
In [1]: df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,pd.NA]}, dtype='Int64')

In [2]: np.asanyarray(df, dtype='float')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In [2], line 1
----> 1 np.asanyarray(df, dtype='float')

File ~/pandas-dev/pandas/core/generic.py:2078, in NDFrame.__array__(self, dtype)
   2077 def __array__(self, dtype: npt.DTypeLike | None = None) -> np.ndarray:
-> 2078     return np.asarray(self._values, dtype=dtype)

TypeError: float() argument must be a string or a number, not 'NAType'
``` closing as per the dev meeting, will look into handling this directly in __asarray__ (just to have it written down here as well)

> Sure, the issue still arises when using `np.asanyarray(ser)` though, as then you can't pass a `na_value` and it'll fail on `pd.NA`:

That's still a consequence of defaulting to object dtype (what is happening here is that the `df` gets converted to a single object dtype array, and then numpy tries to convert this to float, running into this issue). 

So also for this example we can handle this in `__array__` if we would like to avoid going through object dtype (raise error, directly coerce to float with NaNs, etc)