题
我需要在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_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';
}