While I'm a fan of unsigned (size_t mostly) there have been a few times when the tax for converting them to float was shockingly high:

https://godbolt.org/z/96T4jTshc

1-2 instructions for signed vs 11 including a branch for unsigned.

(in times like these I found casting to signed first preferable)