BUG: Use float64 for row counter in rank()
- [X] closes #18271
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

As reported in #18271, for a large `Series` `s` of `float`s, `Series.rank(pct=True).max()` may not be `<=1` as expected.

This is due to the use of a `float` for the row counter. This updates the counter to use a `float64`.
