Когда я звоню Math.ceil(5.2)
, возвращается double
6.0
. Моей естественной склонностью было думать, что Math.ceil(double a)
вернет long
. Из документации:Почему Math.ceil возвращает двойной?
ceil(double a)
Возвращает наименьшее (ближайшее к отрицательной бесконечности)
double
значение , которое не меньше аргумента и равно математическому целое.
Но почему возвращают double
, а не long
, когда результат является целым числом? Я думаю, что понимание причины этого может помочь мне понять Java немного лучше. Это также может помочь мне разобраться, попаду ли я в неприятности, добавив к long
, например. является
long b = (long)Math.ceil(a);
всегда то, что я думаю, что это должно быть? Боюсь, что могут быть некоторые граничные случаи, которые являются проблематичными.
См. Http://stackoverflow.com/questions/3412449/why-does-math-round-return-a-long-but-math-floor-return-a-double – starblue