Java - Lemmy.world

Doubles have a much higher max value than ints, so if the method were to convert all doubles to ints they would not work for double values above 2^31-1.

(It would work, but any value over 2^31-1 passed to such a function would get clamped to 2^31-1)

So why not return a long or whatever the 64 bit int equivalent is?

Because even a long (64-bit int) is too small :)
A long can hold 2^64-1 = 1.84E19
A double can hold 1.79E308

Double does some black magic with an exponent, and can hold absolutely massive numbers!

Double also has some situations that it defines as "infinity", a concept that does not exist in long as far as I know (?)