문제

PHP에서 ∞를 시뮬레이션해야합니다.

하도록 하다 min(∞,$number) 항상 $number.

올바른 솔루션이 없습니다

다른 팁

정수의 경우 사용할 수 있다고 생각합니다. PHP_INT_MAX , 다음 코드 :

var_dump(PHP_INT_MAX);

내 컴퓨터 에서이 출력을 제공합니다.

int 2147483647


그러나 당신은 조심해야합니다. 보다 정수 오버플로 (인용) :

PHP가 정수 유형의 한계를 넘어 숫자를 만나면 대신 플로트로 해석됩니다. 또한 정수 유형의 범위를 넘어 숫자를 초래하는 작업은 대신 플로트를 반환합니다.

그리고, 부동 소수점 번호 문서 페이지 :

플로트의 크기는 플랫폼 의존적이지만 약 14 자리 숫자의 정밀도 인 최대 ~ 1.8E308은 공통 값 (64 비트 IEEE 형식)입니다.

정수 오버플로를 고려하고 사례에 따라 이러한 종류의 가치를 사용하는 것이 더 나은 솔루션 일 수 있습니다 ...

상수를 사용하십시오 PHP_INT_MAX.

http://php.net/manual/en/language.types.integer.php

잠재적으로 사용할 수 있습니다 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';
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top