Цілі числа
int - це число з множини ℤ = {..., -2, -1, 0, 1, 2, ...}.
Дивіться також
- Числа з плаваючою точкою
- Обчислення над числами з довільною точністю BCMath
- Обчислення над цілими числами з довільною точністю (GNU Multiple Precision)
Синтаксис
Цілі числа (int) можуть бути вказані в десятковій (підстава 10), шістнадцятковій (підстава 16), вісімковій (підстава 8) або двійковій (підстава 2) системі числення. Для завдання негативних цілих (int) використовують оператор заперечення
Для запису у восьмеричній системі числення перед числом ставлять (нуль). Починаючи з PHP 8.1.0 восьмічної нотації також може передувати 0o
или0O
Для записи в шестнадцатеричной системе счисления необходимо поставить перед числом0x
Для записи в двоичной системе счисления необходимо поставить перед числом0b
Починаючи з PHP 7.4.0 цілочисленні літерали можуть містити підкреслення (_
) між цифрами для кращого читання літералів. Ці підкреслення видаляються сканером PHP.
Приклад #1 Цілі числа
Loading...
Формально структура цілих чисел int прийнята в PHP 8.1.0 (раніше не допускалися восьмеричні префікси 0o
или0O
, а до PHP 7.4.0 не допускалося підкреслення):
десятичные : [1-9][0-9]*(_[0-9]+)*
| 0
шестнадцатеричные : 0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)*
восьмеричные : 0[oO]?[0-7]+(_[0-7]+)*
двоичные : 0[bB][01]+(_[01]+)*
целые : десятичные
| шестнадцатеричные
| восьмеричные
| двоичные
Розмір типу int залежить від платформи, хоча, як правило, максимальне значення приблизно дорівнює 2 мільярдам (це 32-бітове знакове). 64-бітові платформи зазвичай мають максимальне значення близько 9E18. PHP не підтримує беззнакові цілі числа (int). Розмір int може бути визначений за допомогою константи PHP_INT_SIZE
, максимальне значення - за допомогою константи PHP_INT_MAX
, а за допомогою константи PHP_INT_MIN
можна визначити мінімальне значення.
Переповнення цілих чисел
Якщо PHP виявив, що число перевищує розмір типу int, він буде інтерпретувати його як float. Аналогічно, якщо результат операції лежить за межами типу int, він буде перетворений на float.
Приклад #2 Переповнення цілих на 32-бітових системах
Loading...
Приклад #3 Переповнення цілих на 64-бітових системах
Loading...
У PHP немає оператора цілого (int) поділу, для цього існує функція intdiv()Результатом1/2
будет float0.5
. Якщо привести значення до int, воно буде заокруглено вниз, тобто буде відкинута дрібна частина числа. Для більшого контролю за округленням використовують функцію round()
Loading...
Перетворення на ціле
Для явного преобразования в тип int используют приведение(int)
или(integer)
. Однак у більшості випадків у приведенні типу немає необхідності, оскільки значення буде автоматично перетворено, якщо оператор, функція або структура, що управляє, вимагає аргумент типу int. Значення також може бути перетворено на тип int функцією intval()
Якщо значенням з типом resource перетворюється на значенням з типом int, результатом буде унікальний номер ресурсу, прив'язаний до resource під час виконання PHP програми.
Смотрите также:Маніпуляції з типами
Излогічноготипа
Логічне значення false
перетворюється на (нуль), а true
- в (единицу).
Изчисел із плаваючою точкою
При преобразовании из float в int число будет округленовниз. Починаючи з PHP 8.1.0 при неявному перетворенні неінтегрального числа з плаваючою точкою (float) у ціле число (int), яке втрачає точність, видається повідомлення про старіння.
Loading...
Якщо число з точкою, що плаває, перевищує розміри int (зазвичай ± 2.15e+9 = 2^31
на 32-бітових системах та ± 9.22e+18 = 2^63
На 64-бітових системах, результат буде невизначеним, тому що float не має достатньої точності, щоб повернути правильний результат у вигляді цілого числа (int). У цьому випадку не буде виведено ні попередження, ні зауваження!
Зауваження :
Значення NaN та Infinity при приведенні до int стають рівними нулю, замість невизначеного значення залежно від платформи.
Увага
Не можна приводити невідомий дріб до типу int, оскільки це може дати несподівані результати.
Loading...
Докладніше про це розказано в попередження про точність чисел з плаваючою точкою
З рядків
Якщо рядок містить число або провідну числову послідовність, тоді вона буде перетворена на відповідне ціле число, в іншому випадку вона перетворюється на нуль (
З NULL
Значение**null
** завжди перетворюється на нуль (
З інших типів
Застереження
Для других типов поведение преобразования в int не определеноНе потрібнополагаться на наблюдаемое ранее поведение, так как оно может измениться без предупреждения.