Целое это число из множества Z = {..., -2, -1, 0, 1, 2, ...}.
Смотрите также: Целые произвольной длины и Числа с плавающей точкой
Целые могут быть указаны в десятичной, шестнадцатеричной или восьмеричной системе счисления, по желанию с предшествующим знаком (- или +).
Если вы используете восьмеричную систему счисления, вы должны предварить число 0 (нулем), для использования шестнадцатеричной системы нужно поставить перед числом 0x.
Если вы определите число, превышающее пределы целого типа, оно будет интерпретировано как число с плавающей точкой. Также, если вы используете оператор, результатом работы которого будет число, превышающее пределы целого, вместо него будет возвращено число с плавающей точкой.
$large_number = 2147483647; var_dump($large_number); // вывод: int(2147483647) $large_number = 2147483648; var_dump($large_number); // вывод: float(2147483648) // это справедливо и для шестнадцатеричных целых: var_dump( 0x80000000 ); // вывод: float(2147483648) $million = 1000000; $large_number = 50000 * $million; var_dump($large_number); // вывод: float(50000000000) |
Внимание |
К сожалению, в PHP была ошибка, так что это не всегда верно работает, когда используются отрицательные числа. Например: когда вы умножаете -50000 * $million, результатом будет -429496728. Однако, если оба операнда положительны, проблем не возникает. Эта ошибка устранена в PHP 4.1.0. |
в PHP не существует оператора деления целых. Результатом 1/2 будет число с плавающей точкой 0.5. Вы можете привести значение к целому, что всегда округляет его в меньшую сторону, либо использовать функцию round().
Для несомненной конвертации значения в целое используйте привидение типа (int) или (integer). Однако в большинстве случаев вам нет необходимости использовать привидение типа, поскольку значение будет автоматически конвертировано, если оператор, функция или управляющая конструкция требует целый аргумент. Вы также можете конвертировать значение в целое при помощи функции intval().
Смотрите также Манипуляции с типами.
FALSE конвертируется в 0 (ноль), а TRUE - в 1 (единицу).
При конвертации из числа с плавющей точкой в целое, число будет округлено в сторону нуля.
Если число с плавающей точкой превышает пределы целого (как правило, это +/- 2.15e+9 = 2^31), результат будет неопределённым, так как целое не имеет достаточной точности, чтобы вернуть верный результат. В этом случае не будет выведено ни предупреждения, ни даже замечания!
Внимание |
Никогда не приводите неизвестную дробь к целому, так как это может иногда дать неожиданные результаты. Смотрите более подробно: предупреждение о точности числел с плавающей точкой. |
Смотрите Конвертация строк в числа
Предостережение |
Для других типов поведение конвертации в целое не определено. В настоящее время поведение такое же, как если бы значение сперва было конвертировано в булев тип. Однако не полагайтесь на это поведение, так как он может измениться без предупреждения. |
Пред. | Начало | След. |
Булев | Уровень выше | Числа с плавющей точкой |