- Различные типы чисел в PHP
- Целые числа PHP
- Пример
- Число с плавающей точкой
- Пример
- PHP Бесконечность
- Пример
- Специальное значение NAN
- Пример
- Числовые строки в PHP
- Пример
- Приведение строк и чисел с плавающей точкой к целым числам
- Пример
- Сделать число отрицательным (PHP)
- Способ 1
- Способ 2
- Способ 3
- Заключение
- Категории
- Читайте также
- Комментарии
- Вход на сайт
- Социальные сети
- Работа с числами в PHP
- Проверка переменных
- Является ли переменная числом
- Целое или число с плавающей точкой
- Положительное или отрицательное
- Чётное или нечётное
- Привидение к типу
- Преобразование в целое число
- Преобразование в число с плавающей точкой
- Округление
- Округление до целого числа в меньшую сторону:
- Округление до целого числа в большую сторону:
- Ведущие нули
- Добавить ведущие нули:
- Удалить ведущие нули:
- Абсолютное значение
- Сделать число отрицательным:
- Инкремент и декремент
- Минимальное значение
Различные типы чисел в PHP
Работая с числамт следует отметить, что PHP обеспечивает автоматическое преобразование типов данных. Например, если вы присвоите переменной целочисленное значение, тип этой переменной автоматически будет целым числом. На следующей строке кода вы можете назначить строку той же переменной и её тип изменится на строку. Это автоматическое преобразование иногда может нарушить ваш код.
Целые числа PHP
Самый простой тип числа в PHP — это целое число. Как вы уже знаете, целое число — это число без десятичной части. Например, 7 представляет собой целое число, а также 10358 или -10358. С другой стороны, 10.0 и 5.58 — это числа с плавающей точкой.
Таким образом, целое число — это недесятичное число от -2147483648 до 2147483647. Значение больше (или меньше), чем этот целочисленный интервал, будет сохранено как float , потому что оно превышает предел целого числа.
Еще одна особенность чисел, которую нужно знать, это то, что даже если 4 * 2.5 равно 10 , результат сохраняется как float , потому что один из операндов — float (2.5) .
Основные правила определения целого числа:
- должно содержать хотя бы одну цифру;
- не должно иметь десятичной точки;
- может быть положительным или отрицательным;
- может быть указано в трех форматах: десятичном (основание 10), шестнадцатеричном (основание 16 — с префиксом 0x) или восьмеричном (основание 8 — с префиксом 0).
Функции PHP для проверки целочисленного типа переменной:
- is_int() – проверяет, является ли значение целым числом
- is_int() – псевдоним is_int()
- is_int() – псевдоним is_int()
Проверим, является ли тип переменной целым числом:
Пример
$x = 7775;
var_dump(is_int($x)); // выведет bool(true)
$x = 77.85;
var_dump(is_int($x)); // выведет bool(false)
?>
Результат выполнения кода:
Число с плавающей точкой
В отличие от целых чисел ряд типов float может быть представлен различными способами. Значения 4.54 , 7.0 , 3.87E+10 и 4.56E-5 — все это числа с плавающей точкой.
PHP автоматически преобразует число в тип float , когда используются десятичные или очень большие числа. Тип float обычно может хранить числа с величиной до 1.7976931348623E+308 (зависит от платформы) и иметь максимальную точность 14 цифр.
В PHP есть следующие функции для проверки того, является ли переменная типом float :
Так как is_double() является просто псевдонимом is_float() , вы можете использовать любую из них и получить тот же результат:
Пример
$x = 10.365;
var_dump(is_float($x)); // выведет bool(true)
$x = 77.85;
var_dump(is_double($x)); // выведет bool(true)
?>
Результат выполнения кода:
PHP Бесконечность
В PHP любое числовое значение выше PHP_FLOAT_MAX на платформе считается бесконечным.
Вы можете проверить, является ли числовое значение конечным или бесконечным, используя функции is_finite() и is_infinite() .
Функция PHP var_dump() возвращает тип данных и значение:
Пример
$x = 3.14e411;
var_dump($x); // выведет float(INF)
?>
Результат выполнения кода:
Специальное значение NAN
Некоторые функции при работе с числами могут возвращать специальное значение NAN . Значение NAN является сокращением от Not a Number (не число). Данное значение означает, что какая-то используемая математическая функция вышла за пределы допустимого диапазона значений в операциях с плавающей точкой или не смогла обработать свои входные данные. Например, log(-1) будет NAN . Аналогично, acos(5) также будет NAN . Вы можете проверить, не является ли значение, возвращаемое математической операцией, не числом, используя функцию is_nan() .
Функция PHP var_dump() возвращает тип данных и значение:
Пример
$x = acos(5);
var_dump($x); // выведет float(NAN)
?>
Результат выполнения кода:
Числовые строки в PHP
Функцию is_numeric() можно использовать для определения, действительно ли строка или переменная является числовой или нет. Эта функция вернет true для чисел, записанных в восьмеричной, двоичной или шестнадцатеричной нотации. Она также вернет true , если числа записаны в экспоненциальном виде, например, +19.42e49 .
PHP будет неявно использовать любую действительную числовую строку для числа, когда возникнет необходимость. Следующие примеры помогут вам лучше понять этот процесс:
Пример
$x = 3985;
var_dump(is_numeric($x));
$x = "3985";
var_dump(is_numeric($x));
$x = "39.85" + 100;
var_dump(is_numeric($x));
$x = 0xfedd24;
var_dump(is_numeric($x));
$x ="0xfedd24";
var_dump(is_numeric($x));
$x = "Привет мир";
var_dump(is_numeric($x));
?>
Результат выполнения кода:
Как вы можете видеть, вся действительная числовая строка была преобразована в их соответствующие значения перед добавлением или другими операциями. Тип переменной $x в результате зависит от её конечного значения.
В предпоследнем случае шестнадцатеричная строка «0xfedd24» не преобразуется в ее десятичное значение потому, что PHP 7 не считает ее допустимой числовой строкой.
Примечание: Примечание: Начиная с PHP 7.0 функция is_numeric() возвращает значение FALSE для числовых строк в шестнадцатеричной форме (например, «0xfedd24» ), поскольку они больше не считаются числовыми строками.
Приведение строк и чисел с плавающей точкой к целым числам
Иногда вам будет нужно преобразовать числовое значение в другой тип данных. В PHP имеется множество функций и методов для этих целей. В большинстве случаев приведение будет выполнено неявно и вам не придется беспокоиться об этом. Но, если вам нужно сделать преобразование, используйте методы, приведенные ниже.
Для преобразования любого значения в целое число вы можете использовать функции (int) или (integer) . В случае float значения всегда будут округлены до нуля. Другой способ преобразовать строки и float в целые числа применить функцию intval() . Обе функции (int) и intval() работают одинаково.
Пример
// Привести float к int
$x = 77465.768;
$int_cast = (int)$x;
echo $int_cast; echo "
";
// Привести строку к int
$x = "77465.768";
$int_cast = (int)$x;
echo $int_cast;
?>
Результат выполнения кода:
Сделать число отрицательным (PHP)
В PHP нет функции, которая делала бы из числа отрицательное число. Написать самому эту функцию очень просто, способов причем масса.
Способ 1
Этот способ является самым быстрым.
Способ 2
Второй по скорости способ.
Способ 3
Самый медленный, но самый красивый.
Заключение
Вообще разница в скорости настолько незначительна, что ее в расчет можно не брать.
Опыт проводился следующим образом: 20000 случайных чисел проверялись на время, 10 тестов каждой функции, затем вычисление среднего значения.
Первый способ показал себя самым быстрым (~0.514 секунд на обработку 200000 чисел). Все-таки без вызова лишних функций проверка идет быстрее.
Второй способ показал себя чуть медленнее (~0.532 секунд на обработку 200000 чисел).
Третий способ показал себя самым медленным (~0.544 секунд на обработку 200000 чисел).
Категории
Читайте также
- Переменная является числом (PHP)
- Максимальное число (JavaScript)
- Вывод ip2long чисел (PHP)
- Деление без остатка (PHP)
- Первые N символов строки цифры (PHP)
- Округление в большую сторону (JavaScript)
- Округление в меньшую сторону (JavaScript)
- Деление без остатка (JavaScript)
- Умножить массив на число (PHP)
- Преобразовать строку в число (PHP)
- Сделать первую букву заглавной (PHP)
- Редирект (PHP)
Комментарии
А если $number уже является отрицательным числом?
Хрень какую то пишете. Почему просто в функции нельзя вернуть «return -$number;»? И умножение на -1 является более правильным вариантом особенно по сравнению с остальными вариантами
Эдуард Максимович, А если число будет уже отриательным? То ваш метод вернет положительное число. А способ в статье вернет всегда отрицательное число (Кроме 0)
Вход на сайт
Введите данные указанные при регистрации:
Социальные сети
Вы можете быстро войти через социальные сети:
Работа с числами в PHP
Сборник математических функций PHP и примеры их использования.
Проверка переменных
Является ли переменная числом
is_numeric($value) – проверяет, является ли значение или переменная числом или строкой, содержащей число.
is_numeric(1); // true is_numeric(0.1); // true is_numeric(-1); // true is_numeric(-0.1); // true is_numeric('1'); // true is_numeric('1abc'); // false is_numeric('abc'); // false
ctype_digit($value) – проверяет, являются ли все символы в строке цифрами.
ctype_digit('123'); // true ctype_digit('123.10'); // false ctype_digit('abc'); // false ctype_digit('1abc'); // false ctype_digit('abc1'); // false
is_int($value) – проверяет, является ли значение целым числом.
is_int(1); // true is_int(0.1); // false is_int(-1); // true is_int(-0.1); // false is_int('1'); // false is_int('1abc'); // false is_int('abc'); // false
is_float($value) – проверяет, является ли значение числом с плавающей точкой.
is_float(1); // false is_float(0.1); // true is_float(-1); // false is_float(-0.1); // true is_float('1'); // false is_float('1abc'); // false is_float('abc'); // false
Целое или число с плавающей точкой
Следующий пример определяет является ли число целым или с плавающей точкой, при этом не проверяет его отрицательность.
$value = 1; if (is_int($value)) < echo 'Целое число'; >elseif (is_float($value)) < echo 'Число с плавающей точкой'; >else
Положительное или отрицательное
$value = 1; if ($value == abs($value)) < echo 'Число положительное'; >if ($value != abs($value))
Чётное или нечётное
$value = 100; if (($value % 2) == 0) < echo 'Число чётное'; >if (($value % 2) != 0)
Привидение к типу
Преобразование в целое число
(int) 1; // 1 (int) 0.1; // 0 (int) -1; // -1 (int) -0.1; // 0 (int) '1'; // 1 (int) 'abc'; // 0 (int) '1abc'; // 1 (int) 'abc1'; // 0
В место (int) можно использовать (intiger) . Тоже самое делает функция intval() :
intval(1); // 1 intval(0.1); // 0 intval(-1); // -1 intval(-0.1); // 0 intval('1'); // 1 intval('abc'); // 0 intval('1abc'); // 1 intval('abc1'); // 0
Преобразование в число с плавающей точкой
(float) 1; // 1 (float) 0.1; // 0.1 (float) -1; // -1 (float) -0.1; // -0.1 (float) '1'; // 1 (float) 'abc'; // 0 (float) '1abc'; // 1 (float) 'abc1'; // 0
В место (float) можно использовать (double) или (real) и тоже самое делает функция floatval() .
floatval(1); // 1 floatval(0.1); // 0.1 floatval(-1); // -1 floatval(-0.1); // -0.1 floatval('1'); // 1 floatval('abc'); // 0 floatval('1abc'); // 1 floatval('abc1'); // 0
Округление
Функция round($value, $precision) округляет значение до указанных цифр после запятой.
echo round(100001.123456, 2); // 100001.12
Функция может окрукруглять значение целой части (числа перед запятой), для этого нужно указать отрицательное значение во втором аргументе.
Округление до целого числа в меньшую сторону:
echo floor(100.4); // 100 echo floor(100.9); // 100
Округление до целого числа в большую сторону:
echo ceil(100.4); // 101 echo ceil(100.1); // 101
Ведущие нули
Добавить ведущие нули:
echo sprintf("%06d", 100); // 000100 echo sprintf("%010d", 100); // 0000000100
Удалить ведущие нули:
echo intval('0000000100'); // 100 // Или с помощью ltrim echo ltrim('0000000100', '0'); // 100
Абсолютное значение
Функция abs($value) – возвращает абсолютное значение (модуль числа), т.е. из отрицательного делает положительное.
echo abs(100); // 100 echo abs(-100); // 100 echo abs(1.5); // 1.5 echo abs(-1.5); // 1.5
Сделать число отрицательным:
$value = 10; $value = -abs($value); echo $value; // -10
Инкремент и декремент
Инкремент – увеличение значения на единицу, бывает постфиксный и префиксный.
// Постфиксный инкремент $value = 10; echo $value++; // 10 echo $value; // 11 // Префиксный инкремент $value = 10; echo ++$value; // 11 echo $value; // 11
Декремент уменьшает значение на единицу.
// Постфиксный декремент $value = 10; echo $value--; // 10 echo $value; // 9 // Префиксный декремент $value = 10; echo --$value; // 9 echo $value; // 9