BUG: Precision loss when casting 19-digit integer to float
### 

- [X] I have checked that this issue has not already been reported.

- [X] I have confirmed this bug exists on the [latest version](https://pandas.pydata.org/docs/whatsnew/index.html) of pandas.

- [ ] I have confirmed this bug exists on the master branch of pandas.


### Reproducible Example

```python
ls = [
    1234567890123456789,
    np.nan,
    1234567890123337789,
]

pd.Series(ls, dtype=np.float128)
```


### Issue Description

When a series is created from a list that contains np.nan values, its type is float.
And if the list contains 19-digit integers the precision of the last few digits is lost.

A similar issue seems to have been fixed in numpy a couple of years ago: https://github.com/numpy/numpy/issues/9006.

Would you please suggest any workaround until this is resolved? Having a series with integer values and nans would work for me in this particular case. Thank you in advance.

### Expected Behavior

The expected behaviour would be to keep the precision exactly.

### Installed Versions

<details>

INSTALLED VERSIONS
------------------
commit           : 73c68257545b5f8530b7044f56647bd2db92e2ba
python           : 3.8.5.final.0

pandas           : 1.3.3
numpy            : 1.20.2

</details>
