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