PHP 中的最小整数 7
Minimum integer in PHP 7
在 PHP 7(64 位 Ubuntu)的交互模式下,
php > echo true;
1
php > echo false; # no output for false
php > echo PHP_INT_MIN == -9223372036854775808;
1
php > echo is_int(PHP_INT_MIN);
1
php > echo is_int(-9223372036854775808);
为什么最后一行不输出1?
var_dump()
是你的朋友。
var_dump(
PHP_INT_MIN,
is_int(PHP_INT_MIN),
-9223372036854775808,
is_int(-9223372036854775808)
);
/* Output:
int(-9223372036854775808)
bool(true)
float(-9.2233720368548E+18)
bool(false)
*/
因为is_int :
perates in signed fashion, not unsigned, and is limited to the word size of the environment php is running in.
等等 -9223372036854775808 它小于您的系统字数限制
首先 PHP 将您的整数值解析为浮点数,因为整数溢出。然后它使用 is_int() 来确定 PHP 解析的是否是 integer。请参阅 64 位系统的示例 #3。
请注意 is_int() 也适用于无符号整数。
使用 32 位 PHP 7:
echo PHP_INT_MIN; // -2147483648
echo var_dump(is_int(-2147483648)); // bool(false)
echo var_dump(is_int(-2147483647)); // bool(true)
为确保 PHP_INT_MIN 减一,请在您的 64 位 PHP 7 上尝试此操作:
echo var_dump(is_int(-9223372036854775807)); // bool(true)?
如果您需要更高的整数精度,可以使用 GMP extension.
在 PHP 7(64 位 Ubuntu)的交互模式下,
php > echo true;
1
php > echo false; # no output for false
php > echo PHP_INT_MIN == -9223372036854775808;
1
php > echo is_int(PHP_INT_MIN);
1
php > echo is_int(-9223372036854775808);
为什么最后一行不输出1?
var_dump()
是你的朋友。
var_dump(
PHP_INT_MIN,
is_int(PHP_INT_MIN),
-9223372036854775808,
is_int(-9223372036854775808)
);
/* Output:
int(-9223372036854775808)
bool(true)
float(-9.2233720368548E+18)
bool(false)
*/
因为is_int :
perates in signed fashion, not unsigned, and is limited to the word size of the environment php is running in.
等等 -9223372036854775808 它小于您的系统字数限制
首先 PHP 将您的整数值解析为浮点数,因为整数溢出。然后它使用 is_int() 来确定 PHP 解析的是否是 integer。请参阅 64 位系统的示例 #3。
请注意 is_int() 也适用于无符号整数。 使用 32 位 PHP 7:
echo PHP_INT_MIN; // -2147483648
echo var_dump(is_int(-2147483648)); // bool(false)
echo var_dump(is_int(-2147483647)); // bool(true)
为确保 PHP_INT_MIN 减一,请在您的 64 位 PHP 7 上尝试此操作:
echo var_dump(is_int(-9223372036854775807)); // bool(true)?
如果您需要更高的整数精度,可以使用 GMP extension.