문제
PHP에서 ∞를 시뮬레이션해야합니다.
하도록 하다 min(∞,$number)
항상 $number
.
올바른 솔루션이 없습니다
다른 팁
정수의 경우 사용할 수 있다고 생각합니다. PHP_INT_MAX
, 다음 코드 :
var_dump(PHP_INT_MAX);
내 컴퓨터 에서이 출력을 제공합니다.
int 2147483647
그러나 당신은 조심해야합니다. 보다 정수 오버플로 (인용) :
PHP가 정수 유형의 한계를 넘어 숫자를 만나면 대신 플로트로 해석됩니다. 또한 정수 유형의 범위를 넘어 숫자를 초래하는 작업은 대신 플로트를 반환합니다.
그리고, 부동 소수점 번호 문서 페이지 :
플로트의 크기는 플랫폼 의존적이지만 약 14 자리 숫자의 정밀도 인 최대 ~ 1.8E308은 공통 값 (64 비트 IEEE 형식)입니다.
정수 오버플로를 고려하고 사례에 따라 이러한 종류의 가치를 사용하는 것이 더 나은 솔루션 일 수 있습니다 ...
상수를 사용하십시오 PHP_INT_MAX
.
잠재적으로 사용할 수 있습니다 PHP_INT_MAX
끊임없는 (PHP 매뉴얼 문서를 클릭하십시오).
그러나 당신은 당신이 정말로 당신이 필요 그것을 사용하려면 - 약간 이상한 요청처럼 보입니다.
PHP는 실제로 "Infinity"에 대한 사전 정의 된 상수를 가지고 있습니다. 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()
물론이야).
유일한 우려 사항이 비교 함수라면 예, Array ()를 사용할 수 있습니다.
처럼
echo min(array(), 9999999999999999);
또는
if (array() > 9999999999999999) {
echo 'array won';
} else {
echo 'number won';
}