Question

Je dois simuler un ∞ en PHP.

Alors que min(∞,$number) est toujours $number.

Pas de solution correcte

Autres conseils

Je suppose que, pour les entiers, vous pouvez utiliser PHP_INT_MAX , le code suivant:

var_dump(PHP_INT_MAX);

donne cette sortie, sur ma machine:

int 2147483647


Mais vous devez être prudent; voir dépassement d'entier ( citant) :

  

Si PHP rencontre un certain nombre au-delà de la   limites du type entier, il sera   être interprété comme un flotteur à la place.   En outre, une opération qui se traduit par un   nombre au-delà des limites de la   type entier retournera un flotteur   à la place.

Et, à partir du flottant page de documentation de numéros de points:

  

La taille d'un flotteur est   dépendant de la plate-forme, mais au maximum   de ~ 1.8e308 avec une précision de   environ 14 chiffres décimaux est une commune   La valeur (le format IEEE 64 bits).

Compte tenu du dépassement d'entier, et en fonction de votre cas, en utilisant ce type de valeur pourrait être une meilleure solution (?) ...

Vous pouvez éventuellement utiliser la constante PHP_INT_MAX (cliquer pour docs manuel PHP) .

Cependant, vous voudrez peut-être penser à si vous avez vraiment besoin pour l'utiliser -. Il semble un peu d'une étrange requête

PHP a en fait une constante prédéfinie pour "l'infini": INF. Ce n'est pas true l'infini, mais est essentiellement la plus grande valeur flottante possible. le plus grand flotteur est à peu près égale sur les systèmes 64 bits, à 1.8e308, donc cela est considéré comme égal à l'infini.

$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)

Note, un nombre quelconque d'une valeur supérieure à la valeur flottante maximale sera jeté à INF. Ainsi donc, si nous le faisons, var_dump($inf === 1e50000);, ce sera aussi la sortie true même si le flotteur maximum est inférieur à cela.

Je suppose que, en supposant que cela est un entier, vous pouvez utiliser constante PHP_INT_MAX.

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

En Perl, vous pouvez utiliser

$INF = 9**9E9;

qui est plus grande que toute valeur que vous pouvez stocker dans des nombres à virgule flottante IEEE. Et cela fonctionne vraiment comme prévu: un nombre non-infini sera plus petite que $INF:

$N < $INF

est vrai pour un certain nombre "normal" $N.

Peut-être que vous l'utilisez en PHP aussi?

min($number,$number) est toujours $number (également vrai pour max() bien sûr).

Si votre seule préoccupation est fonction de comparaison alors oui, vous pouvez utiliser le tableau (), il sera toujours plus grand que tout nombre

comme

echo min(array(), 9999999999999999);

ou

if (array() > 9999999999999999) {
  echo 'array won';
} else {
  echo 'number won';
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top