Cuando llamo al Math.ceil(5.2)
, la devolución es double
6.0
. Mi inclinación natural era pensar que Math.ceil(double a)
devolvería un long
. A partir de la documentación:¿Por qué Math.ceil devuelve un doble?
ceil(double a)
Devuelve el más pequeño (el más cercano al infinito negativo)
double
valor que no es menor que el argumento y es igual a un número entero matemática.
Pero por qué devolver un double
en lugar de un long
cuando el resultado es un entero? Creo que entender la razón detrás de esto podría ayudarme a entender Java un poco mejor. También podría ayudarme a descubrir si me meteré en problemas lanzando a un long
, p. es
long b = (long)Math.ceil(a);
siempre lo que creo que debería ser? Me temo que podría haber algunos casos límites que son problemáticos.
Ver http://stackoverflow.com/questions/3412449/why-does-math-round-return-a-long-but-math-floor-return-a-double – starblue