I think it's more accurate to say that it is commonly (and by default) an int but it could be a float. Or at least, it's usually initially an int for the first job run.
I guess the options are we type hint it as int|float
or we ensure it is always cast to a float and type hint accordingly.
Leaning towards the former to be honest.