Когда я звоню 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);
всегда, как мне кажется, должно быть? Я боюсь, что могут быть некоторые пограничные случаи, которые являются проблематичными.