you are viewing a single comment's thread
view the rest of the comments
[–] 8 points 3 years ago (2 children)

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

  • source
  • parent
  • hideshow 4 child comments
  • To avoid a type conversion that might not be expected. Integer math in Java differs from floating point math.

    Math.floor(10.6) / Math.floor(4.6) = 2.5 (double)

    If floor returned a long, then

    Math.floor(10.6) / Math.floor(4.6) = 2 (long)

    If your entire code section is working with doubles, you might not like finding Math.floor() unexpectedly creating a condition for integer division and messing up your calculation. (Have fun debugging this if you're not actively aware of this behavior).

  • source
  • parent
  • [–] 4 points 3 years ago

    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 (?)

  • source
  • parent