Перейти к основному содержимому

Числа в PHP

Числа в PHP бывают трёх основных видов:

  • Integer
  • Float
  • Numeric Strings

Вы также встретите два особых числовых значения:

  • Infinity
  • NaN

PHP создаёт числовую переменную, как только вы присваиваете ей число; отдельное объявление не требуется.

Если вы не уверены, какой тип у переменной или объекта, передайте их в var_dump().

Проверка типов данных

var_dump() сообщает и тип, и значение, поэтому видно, что $c — строка, хотя она содержит цифры:

Prompt
Напишите PHP-скрипт, который создаёт три переменные: $a как целое число 5, $b как число с плавающей точкой 5.34 и $c как строку "25", а затем применяет к каждой var_dump(), чтобы показать их типы данных.
Вывод: PHP-скрипт

Числовые типы переменных

Каждая из этих переменных получает тип от присвоенного ей значения:

index.php
<?php
$a = 5;
$b = 5.34;
$c = "25";
?>

Функция is_int() в PHP

Чтобы проверить, содержит ли переменная целое число, используйте is_int().

Целые числа не имеют дробной части, например 2, 256, -256, 10358 и -179567.

Их диапазон зависит от системы. В 32-битных системах целое число лежит в пределах от -2147483648 до 2147483647, а в 64-битных — от -9223372036854775808 до 9223372036854775807. Если выйти за любую из этих границ, PHP сохранит значение как число с плавающей точкой.

Примечание: Вычисление с участием числа с плавающей точкой тоже даёт число с плавающей точкой. Например, 4 * 2.5 равно 10, но это 10 хранится как число с плавающей точкой, потому что 2.5 — один из операндов.

Запомните эти правила записи целых чисел:

  • Нужна хотя бы одна цифра
  • Десятичная точка не допускается
  • Значение может быть положительным или отрицательным
  • Доступны четыре формы записи: десятичная (основание 10), шестнадцатеричная (основание 16, с префиксом 0x), восьмеричная (основание 8, с префиксом 0) и двоичная (основание 2, с префиксом 0b)

В PHP также есть три встроенные константы для целых чисел:

  • PHP_INT_MAX — наибольшее доступное целое число
  • PHP_INT_MIN — наименьшее доступное целое число
  • PHP_INT_SIZE — сколько байтов занимает целое число

Проверка, является ли переменная целым числом

$x содержит целое число, а $y нет, поэтому только первая проверка даёт true:

Prompt
Напишите PHP-скрипт, который проверяет, является ли целое число 5985 целым, с помощью is_int() и var_dump(), а затем проверяет, является ли целым число с плавающей точкой 59.85.
Вывод: PHP-скрипт

Функция is_float() в PHP

is_float() сообщает, содержит ли переменная число с плавающей точкой.

Числа с плавающей точкой записываются с десятичной точкой или в экспоненциальной форме, например 2.0, 256.4, 10.358, 7.64E+5 и 5.56E-5.

Насколько большим может быть такое число, зависит от платформы, но обычный предел составляет около 1.7976931348623E+308 с точностью до 14 цифр.

Начиная с PHP 7.2, числа с плавающей точкой описывают эти встроенные константы:

  • PHP_FLOAT_MAX — наибольшее число с плавающей точкой, которое может представить PHP
  • PHP_FLOAT_MIN — наименьшее положительное число с плавающей точкой, которое может представить PHP
  • PHP_FLOAT_DIG — сколько десятичных цифр сохраняется без потерь при округлении до числа с плавающей точкой и обратно
  • PHP_FLOAT_EPSILON — наименьшее положительное x, для которого x + 1.0 != 1.0

Проверка, является ли переменная числом с плавающей точкой

У значения 10.365 есть десятичная точка, поэтому проверка даёт true:

Prompt
Напишите PHP-скрипт, который проверяет, является ли значение 10.365 числом с плавающей точкой, с помощью is_float() и var_dump().
Вывод: PHP-скрипт

Бесконечность в PHP

У числа с плавающей точкой в PHP есть допустимый диапазон на каждой платформе. Значение внутри этого диапазона считается конечным, и проверить это можно с помощью is_finite().

Значение за пределами этого диапазона считается бесконечным, и именно это проверяет is_infinite().

Проверка, является ли значение бесконечным

1.9e411 слишком велико для числа с плавающей точкой, поэтому PHP считает его бесконечным:

Prompt
Напишите PHP-скрипт, который проверяет, является ли значение 1.9e411 бесконечным, с помощью is_infinite() и var_dump().
Вывод: PHP-скрипт

NAN и функция is_nan() в PHP

Имя NAN — сокращение от «Not A Number». Это то, что вы получаете в результате математической операции, не имеющей смысла.

Чтобы обнаружить такой результат, передайте значение в is_nan().

Проверка значения NAN

Арккосинус 8 не определён, поэтому acos(8) даёт NAN, а is_nan() это подтверждает:

Prompt
Напишите PHP-скрипт, который вычисляет acos(8), выводит результат, а затем проверяет, является ли он NaN, с помощью is_nan() и var_dump().
Вывод: PHP-скрипт

Числа и числовые строки в PHP

Числа не всегда хранятся как числа: текст вроде «5985» — это числовая строка. is_numeric() даёт true в обоих этих случаях и false во всех остальных.

Проверка, является ли переменная числовой

Здесь проверку не проходит только «Hello»; число, числовая строка и результат сложения проходят её:

Prompt
Напишите PHP-скрипт, который проверяет, являются ли числовыми 5985, "5985", "59.85" + 100 и "Hello", с помощью is_numeric() и var_dump().
Вывод: PHP-скрипт

PHP intval(): получение целочисленного значения переменной

Когда вам нужно получить целое число из переменной, передайте её в intval().

Получение целочисленного значения

И число с плавающей точкой, и строка дают 23465, потому что дробная часть отбрасывается:

Prompt
Напишите PHP-скрипт, который получает целочисленное значение числа с плавающей точкой 23465.768 и строки "23465.768" с помощью intval() и echo.
Вывод: PHP-скрипт