PHP bir ∞ simüle etmek gerekir.
min(∞,$number)
her zaman böylece $number
.
Ben tamsayılar için, siz kullanabilirsiniz, varsayalım PHP_INT_MAX
a>, aşağıdaki kodu:
var_dump(PHP_INT_MAX);
Benim makinede, bu çıktıyı verir:
int 2147483647
But you have to be careful ; see Integer overflow (quoting) :
If PHP encounters a number beyond the bounds of the integer type, it will be interpreted as a float instead. Also, an operation which results in a number beyond the bounds of the integer type will return a float instead.
Ve, Floating point numbers dokümantasyon sayfasından:
The size of a float is platform-dependent, although a maximum of ~1.8e308 with a precision of roughly 14 decimal digits is a common value (the 64 bit IEEE format).
Tamsayı taşması göz önüne alındığında, ve bu tür bir değer kullanarak, duruma bağlı bir iyi (?) Bir çözüm olabilir ...
Sen potansiyel PHP_INT_MAX
sabiti (click for PHP manual docs) kullanabilirsiniz.
Ancak, gerçekten need kullanmak isteyip düşünmek isteyebilirsiniz - bu garip bir isteği bir bit gibi görünüyor.
Perl kullanabilirsiniz
$INF = 9**9E9;
hangi IEEE kayan noktalı sayılar saklayabileceğiniz herhangi bir değerden daha büyüktür. Amaçlanan Ve bu gerçekten çalışıyor: Herhangi olmayan sonsuz sayıda daha küçük olacak $INF
:
$N < $INF
herhangi bir "normal" sayıda {[(0)}] için de geçerlidir.
Belki de PHP kullanmak?
PHP aslında "sonsuz" için önceden tanımlanmış sabiti vardır: INF
. Bu true sonsuz değil, esas olarak mümkün olan en geniş yüzer değerdir. 64-bit sistemlerde, büyük şamandıra 1.8e308
için roughly eşittir, bu nedenle bu sonsuza eşit olarak kabul edilir.
$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)
Not, maksimum şamandıra değerden daha büyük bir değere sahip herhangi bir sayı INF
olarak atılacaktır. Biz yaparsak Yani bu nedenle, var_dump($inf === 1e50000);
, bu da çıkış true
maksimum şamandıra bu daha az olsa bile.