PHP ceil () и floor () возвращают float?

Документы PHP указывают следующее для ceil() функция:

Возвращаемые значения

value округляется до следующего наибольшего целого числа. Возвращаемое значение ceil() по-прежнему имеет тип float, так как диапазон значений типа float обычно больше целого.

floor() также возвращает число с плавающей запятой в качестве возвращаемого значения. Тем не менее, это не имеет смысла для меня, почему. Почему недесятичному возвращаемому значению нужен диапазон, превышающий диапазон целого числа?

3

Решение

В цитате, которую вы цитируете, сказано так: диапазон значений с плавающей точкой обычно больше целого. Если вы вернете int (или long), скорее всего, ваше исходное значение выходит за пределы диапазона чисел, которые могут быть представлены указанным int или long.

Дополнительный вопрос & ответ:

Что вы подразумеваете под «вашим первоначальным значением, которое выходит за пределы диапазона чисел»? Я имею в виду, цель ceil() а также floor() это округлять числа до целого числа (целое число) в конце концов?

(Одит Марлоу 6 апреля ’16 в 15:19)

Да, но если у вас есть число без знака, которое больше четырех миллиардов, и что-то или число со знаком, которое больше половины этого числа, оно не может содержаться в int, потому что число слишком велико, чтобы поместиться внутри четырехзначного числа. целое число байтов.

То же самое касается чисел, которые слишком велики, чтобы поместиться в восьмибайтовом целом (длинном).

Если я не ошибаюсь, double (который является восьмибайтовым числом с плавающей запятой) имеет диапазон от 10 ^ -308 до 10 ^ + 308, что НАМНОГО шире, чем диапазон возможных значений long.

Если вы хотите перекрыть или получить число с приблизительным значением 10 ^ 100, вы не можете вписать его в int или long, поэтому подойдет только float (или double).

(этот ответ был синтезирован задолго до того, как вопрос был задан, чтобы дать реальный ответ на вопрос, а не оставлять его открытым только с несколькими комментариями)

3

Другие решения

Других решений пока нет …