Целые числа в PHP
Доброе время суток участники образовательной IT площадки GeekSpace. Меня зовут Юрий Сиротенко и сегодня мы поговорим о целых числах, а точнее о типе данных integer в рамках PHP
Также вы можете посмотреть видео урок "Целые числа" в рамках нашего курса "Введение в PHP" перейдя по этой ссылке
Введение
Давайте для начала предметно разберемся, что такое целое число. Целые числа - это натуральные числа, число ноль, а также отрицательные числа. Натуральные числа это такие числа, которые возникают естественным образом при счёте. Например числа -1, 0, 1 и т.д можно назвать целыми.
На числовой оси целые числа можно выразить следующим образом
Множество целых чисел обозначается следующим символом
ℤ
В PHP Integer - это число из множества ℤ = {..., -2, -1, 0, 1, 2, ...}.
Форма записи
Целочисленный тип данных в мире PHP может обозначаться двумя способами:
- integer - полный
- int - сокращенный
Например в результате применения функции “var_dump” которой в качестве аргумента было передано значение целочисленного типа будет фигурировать сокращенная запись integer
var_dump(1); // int(1)
Но если воспользоваться функцией gettype(), то она вернет полный вариант:
echo gettype(1); // integer
При указании типа значений в параметрах методов и функций допускается указание только сокращенного варианта. Аналогично и в возвращаемых значениях
function test(int $x) : int
{
return $x;
}
При попытке указать полный вариант, на момент версии PHP 7.3.2 будет выброшено исключение TypeError
Системы счисления
Целые числа могут быть указаны в десятичной, шестнадцатеричной, восьмеричной и двоичной системе счисления. Для задания отрицательных целых используется оператор отрицания “-”
Пример |
Система счисления |
$x = 324; |
десятичное число |
$x = -324; |
отрицательное число |
$x = 0123; |
восьмеричное число (эквивалентно 83 в десятичной системе) |
$x = 0x1A; |
шестнадцатеричное число (эквивалентно 26 в десятичной системе) |
$x = 0b11111111; |
двоичное число (эквивалентно 255 в десятичной системе) |
Обратите особое внимание на то, что некоторое число с ведущим нулем и без него - это совершенно разное представление этих чисел
$x = 123;
$x = 0123;
Число 123 с ведущим нулем - это число объявленное в восьмеричной системе счисления, которое при переводе в десятичную становится равным 83.
Диапазон
Диапазон возможных значений типа integer в общем случае определить невозможно, так как размер типа integer зависит от платформы. Например в 32 битных машинах размер может достигать до двух миллиард, а в 64 битных намного больше (9223372036854775807).
С версии PHP 5.0.5 размер integer может быть определен с помощью константы PHP_INT_SIZE. Данная константа принимает целочисленное значение в байтах
Максимальное пороговое значение целочисленного типа данных можно указать при помощи константы PHP_INT_MAX, а минимальное при помощи PHP_INT_MIN
Продвижение типов из integer в float (переполнение целых чисел)
Если целочисленное значение превысит максимально возможный порог, то произойдет так называемое продвижение к типу данных float
$x = 9223372036854775807; // int(9223372036854775807)
$x = 9223372036854775808; // float(9.2233720368548E+18)
Деление целых чисел
В PHP результатом деления двух чисел всегда является значение типа float
$x = 1 / 2; // float(0.5)
Если привести значение float к integer, оно будет округлено вниз, то есть будет отброшена дробная часть числа
$x = (int) (3 / 2); // int(1)
Но в PHP версии 7.0 появилась новая функция для целочисленного деления “intdiv” которая возвращает результат целочисленного деления делимого на делитель
$x = intdiv(3, 2); // int(1)
О преобразованиях в целочисленный тип данных мы поговорим в последующих конспектах