Есть ли что-то, что больше любых чисел в PHP?

StackOverflow https://stackoverflow.com/questions/1900360

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

Нет правильного решения

Другие советы

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

var_dump(PHP_INT_MAX);

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

int 2147483647


Но ты должен быть осторожен ;видишь Переполнение целых чисел (цитирую) :

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

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

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

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

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

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

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

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

PHP на самом деле имеет предопределенную константу для "бесконечности".: INF.Это не верно бесконечность, но, по сути, это максимально возможное значение с плавающей запятой.В 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 даже несмотря на то, что максимальное значение float меньше этого.

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

min($number, $number + 1) ??

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

$INF = 9**9E9;

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

$N < $INF

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

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

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

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

Нравится

echo min(array(), 9999999999999999);

или

if (array() > 9999999999999999) {
  echo 'array won';
} else {
  echo 'number won';
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top