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