Есть ли что-то большее, чем числа в PHP? - PullRequest
5 голосов
/ 14 декабря 2009

Мне нужно смоделировать ∞ в PHP.

Так что min(∞,$number) всегда $number.

Ответы [ 9 ]

7 голосов
/ 14 декабря 2009

Полагаю, что для целых чисел вы можете использовать PHP_INT_MAX, следующий код:

var_dump(PHP_INT_MAX);

Дает этот вывод на моей машине:

int 2147483647


Но вы должны быть осторожны; см. Целочисленное переполнение (цитирование) :

Если PHP встречает число за пределами границы целочисленного типа, это будет будет интерпретироваться как поплавок вместо. Кроме того, операция, которая приводит к число за пределами целочисленный тип вернет число с плавающей точкой вместо этого.

И, со Числа с плавающей точкой Страница документации:

Размер поплавка зависит от платформы, хотя максимум ~ 1.8e308 с точностью до примерно 14 десятичных цифр является общим значение (64-битный формат IEEE).

Учитывая целочисленное переполнение и, в зависимости от вашего случая, использование этого типа значения может быть лучшим (?) Решением ...

3 голосов
/ 14 декабря 2009

Используйте константу PHP_INT_MAX.

http://php.net/manual/en/language.types.integer.php

2 голосов
/ 25 февраля 2014

PHP фактически имеет предопределенную константу для «бесконечности»: INF. Это не true бесконечность, но по сути это наибольшее возможное значение с плавающей запятой. В 64-битных системах наибольшее число с плавающей запятой равно примерно , равному 1.8e308, поэтому считается, что оно равно бесконечности.

$inf = INF;
var_dump(min($inf,PHP_INT_MAX)); // outputs int(9223372036854775807)
var_dump(min($inf,1.79e308)); // outputs float(1.79E+308)
var_dump(min($inf,1.799e308)); // outputs float(INF)
var_dump(min($inf,1.8e308)); // outputs float(INF)
var_dump($inf === 1.8e308); // outputs bool(true)

Обратите внимание, что любое число со значением, превышающим максимальное значение с плавающей запятой, будет приведено к INF. Поэтому, если мы сделаем, var_dump($inf === 1e50000);, это также выдаст true, даже если максимальное значение с плавающей запятой меньше, чем это.

2 голосов
/ 14 декабря 2009

Вы могли бы потенциально использовать PHP_INT_MAX константу (нажмите для просмотра документации по PHP) .

Однако вы можете подумать о том, действительно ли вам нужно для его использования - это выглядит как нечетный запрос.

1 голос
/ 14 декабря 2009

Полагаю, предполагая, что это целое число, вы можете использовать константу PHP_INT_MAX.

0 голосов
/ 12 февраля 2015

Если вас беспокоит только функция сравнения, тогда да, вы можете использовать array (), она всегда будет больше любого числа

как

echo min(array(), 9999999999999999);

или

if (array() > 9999999999999999) {
  echo 'array won';
} else {
  echo 'number won';
}
0 голосов
/ 14 декабря 2009

min($number,$number) всегда $number (также верно для max(), конечно).

0 голосов
/ 14 декабря 2009

В Perl вы можете использовать

$INF = 9**9E9;

, что больше любого значения, которое вы можете сохранить в числах с плавающей запятой IEEE. И это действительно работает как задумано: любое бесконечное число будет меньше, чем $INF:

$N < $INF

верно для любого "нормального" числа $N.

Может быть, вы тоже используете его в PHP?

0 голосов
/ 14 декабря 2009

мин ($ номер, $ номер + 1) ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...