是否有比PHP中的任何数字更大的东西?

时间:2009-12-14 11:26:45

标签: php infinite-value

我需要在PHP中模拟一个∞。

因此min(∞,$number)始终为$number

9 个答案:

答案 0 :(得分:7)

我认为,对于整数,您可以使用PHP_INT_MAX,代码如下:

var_dump(PHP_INT_MAX);

在我的机器上输出此输出:

int 2147483647


但你必须要小心;请参阅Integer overflow (引用)

  

如果PHP遇到超出的数字   它将是整数类型的边界   被解释为浮动。   另外,导致a的操作   超出界限的数字   整数类型将返回一个浮点数   代替。

并且,从Floating point numbers文档页面:

  

浮子的大小是   平台依赖,虽然是最大的   约为1.8e308,精度为   大约14个十进制数字是常见的   值(64位IEEE格式)。

考虑整数溢出,并根据您的情况,使用这种值可能是更好的(?)解决方案......

答案 1 :(得分:3)

答案 2 :(得分:2)

您可以使用PHP_INT_MAX常量(click for PHP manual docs)

但是,你可能想要考虑一下你是否真的需要来使用它 - 这似乎是一个奇怪的请求。

答案 3 :(得分:2)

PHP实际上有一个“infinity”的预定义常量:INF。这不是 true 无穷大,但实质上是可能的最大浮点值。在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

答案 4 :(得分:1)

我想,假设这是一个整数,你可以使用PHP_INT_MAX常量。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

在Perl中你可以使用

$INF = 9**9E9;

大于您可以存储在IEEE浮点数中的任何值。这确实按预期工作:任何非无限数将小于$INF

$N < $INF

对于任何“正常”数字$N都是如此。

也许你也在PHP中使用它?

答案 7 :(得分:0)

min($number,$number)始终为$number(当然也适用于max()。)

答案 8 :(得分:0)

如果你唯一关心的是比较功能,那么是的,你可以使用array(),它会一直大于任何数字

喜欢

echo min(array(), 9999999999999999);

if (array() > 9999999999999999) {
  echo 'array won';
} else {
  echo 'number won';
}