Когда я звоню Math.ceil(5.2)
, возвращается double
6.0
. Моей естественной склонностью было думать, что Math.ceil(double a)
вернет long
. Из документации:
ceil(double a)
Возвращает наименьшее (ближайшее к отрицательной бесконечности)
double
значение, которое не меньше аргумента и равно математическому целому числу.
Но зачем возвращать double
, а не long
, если результат является целым числом? Я думаю, что понимание причины этого может помочь мне немного лучше понять Java. Это также может помочь мне понять, попаду ли я в беду из-за преобразования в long
, например является
long b = (long)Math.ceil(a);
всегда то, что я думаю, это должно быть? Боюсь, что могут возникнуть некоторые проблемы с границами.