我需要在PHP中模拟一个∞。
因此min(∞,$number)
始终为$number
。
答案 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)
使用常量PHP_INT_MAX
。
答案 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';
}