Какое максимальное значение для int в PHP? - PullRequest
98 голосов
/ 22 марта 2009

Игнорируя специальные библиотеки, которые позволяют вам работать с очень большими числами, какое наибольшее значение int вы можете хранить в PHP?

Ответы [ 7 ]

104 голосов
/ 22 марта 2009

Из руководства по PHP :

Размер целого числа зависит от платформы, хотя максимум стоимость около двух миллиардов является обычное значение (это 32 бита со знаком). PHP не поддерживает без знака целые числа. Целочисленный размер может быть определяется с использованием константы PHP_INT_SIZE и максимальное значение, используя константа PHP_INT_MAX начиная с PHP 4.4.0 и PHP 5.0.5.

64-разрядные платформы обычно имеют максимальное значение около 9E18, за исключением Windows до PHP 7, где оно всегда было 32-разрядным.

83 голосов
/ 16 мая 2010

32-битные сборки PHP:

  • Целые числа могут быть от -2 147 483 648 до 2 147 483 647 (~ & plusmn; 2 миллиарда)

64-битные сборки PHP:

  • Целые числа могут быть от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 (~ & plusmn; 9 квинтиллионов)

Номера включительно.

Примечание: в некоторых 64-разрядных сборках когда-то использовались 32-разрядные целые числа, особенно в старых сборках Windows для PHP

Значения за пределами этих диапазонов представлены значениями с плавающей запятой, а также нецелыми значениями в этих диапазонах. Интерпретатор автоматически определит, когда этот переход к плавающей точке должен произойти, основываясь на том, не может ли результирующее значение вычисления быть целым числом.

PHP не поддерживает целые числа без знака как таковые, ограничивая максимальное значение всех целых чисел диапазоном целого числа со знаком.

20 голосов
/ 22 марта 2009

Размер PHP-целых зависит от платформы :

Размер целого числа зависит от платформы, хотя максимум стоимость около двух миллиардов является обычное значение (это 32 бита со знаком). PHP не поддерживает без знака целые числа. Целочисленный размер может быть определяется с использованием константы PHP_INT_SIZE и максимальное значение, используя константа PHP_INT_MAX начиная с PHP 4.4.0 и PHP 5.0.5.

PHP 6 добавляет «длинные» (64-битные).

15 голосов
/ 28 декабря 2010

(немного поздно, но может быть полезно)

Доверяйте только PHP_INT_MAX и PHP_INT_SIZE , это значение зависит от вашей арки (32/64 бита) и вашей ОС ...

Любое другое «предположение» или «подсказка» может быть ложным.

5 голосов
/ 22 марта 2009

Ах, я нашел это: 2 32 - 1 (2147483647)

http://au2.php.net/int

Целочисленное переполнение

Если PHP встречает число за пределами целочисленного типа, оно будет интерпретироваться как число с плавающей точкой. Кроме того, операция, результатом которой является число, выходящее за пределы целочисленного типа, вместо этого вернет число с плавающей запятой.

<?php
$large_number =  2147483647;
var_dump($large_number);
// output: int(2147483647)

$large_number =  2147483648;
var_dump($large_number);
// output: float(2147483648)
2 голосов
/ 22 марта 2009

Это зависит от вашей ОС, но 2147483647 является обычным значением, согласно руководству .

0 голосов
/ 15 марта 2019

Несмотря на то, что PHP_INT_* константы существуют в течение очень долгого времени, те же значения MIN / MAX могут быть найдены программно путем сдвига влево до достижения отрицательного числа:

$x = 1;
while ($x > 0 && $x <<= 1);
echo "MIN: ", $x;
echo PHP_EOL;
echo "MAX: ", ~$x;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...