¿Hay algo que es más grande que cualquier número en PHP?
-
19-09-2019 - |
Pregunta
necesito para simular una ∞ en PHP.
Para que se min(∞,$number)
siempre $number
.
No hay solución correcta
Otros consejos
supongo que, para los números enteros, se puede usar PHP_INT_MAX
, el código siguiente:
var_dump(PHP_INT_MAX);
Da a esta salida, en mi máquina:
int 2147483647
Pero tienes que tener cuidado ; ver Desbordamiento de enteros ( citando a)
Si PHP se encuentra con un número más allá de la límites de tipo entero, lo hará interpretarse como un flotador en su lugar. Además, una operación que resulta en una número más allá de los límites de la tipo entero devolverá un flotador en su lugar.
Y, desde el números de punto flotante página de documentación:
El tamaño de un flotador es dependiente de la plataforma, aunque un máximo de ~ 1.8e308 con una precisión de aproximadamente 14 dígitos decimales es un común valor (el 64 bit formato IEEE).
Teniendo en cuenta el desbordamiento de entero, y dependiendo de su caso, el uso de este tipo de valor podría ser una solución mejor (?) ...
Utilice la PHP_INT_MAX
constante.
Se podría usar potencialmente la PHP_INT_MAX
constante (clic para PHP documentos manuales) .
Sin embargo, es posible que desee pensar en si realmente necesidad para usarlo -. Parece como un poco de una extraña petición
PHP en realidad tiene una constante predefinida para "infinito": INF
. Esto no es true infinito, pero es esencialmente el valor flotante más grande posible. En los sistemas de 64 bits, la más grande de flotación es más o menos igual a 1.8e308
, por lo que este se considera que es igual a infinito.
$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)
Tenga en cuenta, cualquier número con un valor mayor que el valor máximo de flotación será echado a INF
. Así, por lo tanto si lo hacemos, var_dump($inf === 1e50000);
, esto también emite true
a pesar de que el flotador máxima es inferior a este.
supongo, suponiendo que esto es un entero, podría utilizar PHP_INT_MAX constante.
min (número $, $ número + 1) ??
En Perl puede utilizar
$INF = 9**9E9;
que es mayor que cualquier valor que puede almacenar en los números de punto flotante IEEE. Y que realmente funciona según lo previsto: cualquier número infinito no será menor que $INF
:
$N < $INF
es cierto para cualquier número $N
"normal".
Tal vez se utiliza en PHP también?
min($number,$number)
es siempre $number
(también cierto para max()
por supuesto).
Si su única preocupación es función de comparación, entonces sí, se puede utilizar array (), será siempre más grande que cualquier número
como
echo min(array(), 9999999999999999);
o
if (array() > 9999999999999999) {
echo 'array won';
} else {
echo 'number won';
}