매우 큰 숫자로 작업할 수 있는 특별한 라이브러리를 무시하고 PHP에 저장할 수 있는 최대 int 값은 얼마입니까?
질문에 대한 답변
정수의 크기는 플랫폼에 따라 다르지만 최대 약 20억 개의 값이 일반 값(서명된 32비트)입니다.PHP는 부호 없는 정수를 지원하지 않습니다.정수 크기는 상수 PHP_를 사용하여 확인할 수 있습니다.INT_SIZE 및 상수 PHP_를 사용한 최대값PHP 4.4.0 및 PHP 5.0.5 이후 INT_MAX.
64비트 플랫폼의 최대값은 약 9E18입니다. 단, PHP 7 이전의 Windows에서는 항상 32비트입니다.
PHP의 32비트 빌드:
- 정수는 -2,147,483,648 ~2,147,483,647(±20억)입니다.
64비트 PHP 빌드:
- 정수는 -9,223,372,036,854,775,808 ~9,223,372,036,854,775,807(~ ±9,000)입니다.
숫자는 포함되어 있습니다.
참고: 일부 64비트 빌드는 한때 32비트 정수를 사용했으며, 특히 오래된 Windows 빌드는 PHP입니다.
이 범위를 벗어나는 값은 부동소수점 값으로 나타내며, 이 범위 내의 정수 이외의 값도 마찬가지입니다.인터프리터는 계산 결과 값을 정수로 나타낼 수 없는지 여부에 따라 이 부동소수점 전환이 필요한 시기를 자동으로 판단합니다.
PHP는 “서명되지 않은” 정수를 지원하지 않으므로 모든 정수의 최대값을 “서명된” 정수의 범위로 제한합니다.
정수의 크기는 플랫폼에 따라 다르지만 최대 약 20억 개의 값이 일반 값(서명된 32비트)입니다.PHP는 부호 없는 정수를 지원하지 않습니다.정수 크기는 상수 PHP_를 사용하여 확인할 수 있습니다.INT_SIZE 및 상수 PHP_를 사용한 최대값PHP 4.4.0 및 PHP 5.0.5 이후 INT_MAX.
PHP 6은 “longs”(64비트 ints)를 추가합니다.
(조금 늦었지만 도움이 될 수 있습니다)
PHP_만 신뢰INT_MAX 및 PHP_INT_SIZE, 이 값은 아치(32/64비트)와 OS에 따라 달라집니다.
다른 “추측”이나 “힌트”는 거짓일 수 있습니다.
아, 찾았다: 232 대 1 (2147483647)
정수 오버플로
PHP가 정수 타입의 한계를 넘는 숫자를 발견하면 대신 플로트로 해석됩니다.또, 정수 타입의 한계를 넘는 수를 산출하는 연산에서는, 대신에 플로트가 반환됩니다.
<?php $large_number =
2147483647; var_dump($large_number); // output: int(2147483647)
$large_number =
2147483648; var_dump($large_number); // output: float(2147483648)