Коли я дзвоню, Math.ceil(5.2)повернення - це double 6.0. Моє природне схильність було думати, що Math.ceil(double a)це поверне a long. З документації:
ceil(double a)Повертає найменше (найближче до негативної нескінченності)
doubleзначення, яке не менше аргументу і дорівнює цілому математичному числу.
Але навіщо повертати doubleзамість a, longколи результатом є ціле число? Думаю, розуміння причини, що це може допомогти мені трохи краще зрозуміти Java. Це також може допомогти мені зрозуміти, чи потраплятиму в неприємності, кидаючи на a long, наприклад, is
long b = (long)Math.ceil(a);
завжди те, що я думаю, що це повинно бути? Я боюся, що можуть бути певні кордони, які є проблематичними.