我需要在PHP模拟∞。

这样min(∞,$number)总是$number

没有正确的解决方案

其他提示

我想,对于整数,你可以使用 PHP_INT_MAX ,以下代码:

var_dump(PHP_INT_MAX);

给出了这样的输出,在我的机器:

int 2147483647

,点击 但是你必须要小心;请参阅整数溢出 (引用)

  

如果PHP遇到一个数超出了   整数类型的范围,将会   被解释为一个浮代替。   此外,操作这导致   超越的界限号   整数类型将返回一个浮   代替。

和,从href="http://php.net/manual/en/language.types.float.php" rel="noreferrer">浮点数文档页面的

  

浮点数的大小是   平台相关的,虽然最大   数〜1.8e308用的精度   大致14位十进制数是一种常见的   值(64位IEEE格式)。

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

您可能使用PHP_INT_MAX恒定(点击PHP手册文档)

不过,您可能要考虑是否你真的需要以使用它 - 这似乎是一个有点古怪的要求

PHP实际上具有为“无穷大”的预定义常数:INF。这不是的真正的无穷大,但在本质上是最大的浮法可能值。在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

我想,假设这是一个整数,则可以使用PHP_INT_MAX恒定。

分钟($号码,$数+ 1)...

在Perl中可以使用

$INF = 9**9E9;

这比可以在IEEE浮点数存储任何值。而真正按预期工作:任何非无限数量将小于$INF

$N < $INF

为真任何 “正常” 的数目$N

也许你用它在PHP中呢?

min($number,$number)总是$number(也是如此当然max())。

如果你唯一担心的是比较函数,然后是的,你可以使用数组(),这将是永远更大然后任意数量的

echo min(array(), 9999999999999999);

if (array() > 9999999999999999) {
  echo 'array won';
} else {
  echo 'number won';
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top