PHP herhangi bir sayı daha büyük olan bir şey var mı?

8 Cevap php

PHP bir ∞ simüle etmek gerekir.

min(∞,$number) her zaman böylece $number.

8 Cevap

Ben tamsayılar için, siz kullanabilirsiniz, varsayalım PHP_INT_MAX , 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 ...

Sabitini kullanın PHP_INT_MAX.

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

Ben bu bir tamsayı olduğunu varsayarak, varsayalım, sen PHP_INT_MAX'tan sabit kullanabilirsiniz.

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.

dakika (+ 1 $ sayı, $ number)?

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?

min($number,$number) her zaman $number (ayrıca max() tabii için de geçerlidir).

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.