Целые и дробные числа в PHP. В чем особенность этого типа данных?

целые и дробные числа
 в php. в чем особенность этого типа данных?

Особенности числового типа

В PHP существуют два типа числовых данных — это целые (integer) и дробные (float). Числа являются простым типом[1]. Существует масса различий во внутренней работе интерпретатора по отношению к ним.

Максимально возможное целое число зависит от операционной системы вашего компьютера и его комплектации. На 32x разрядном процессоре максимальное целое равно примерно двум миллиардам, а на 64x разрядном более девяти квинтиллионов (что равно девяти миллиардам миллиардов). Это астрономическое число в краткой форме записывается как «9E18».

//Создание переменной с целым числом
$smallInteger = 125;
var_dump($smallInteger);
/*
* Результат:
* int(125)
*/

//Выводим максимально допустимое целое
//с помощью встроенной в PHP константы
var_dump(PHP_INT_MAX);
/*
* Результат:
* int(9223372036854775807)
*/

//Вывод в браузер результата арифметической
//операции
$firstInteger = 2500;
$secondInteger = 1200;
echo $firstInteger + $secondInteger;
/*
* Результат:
* 3700
*/

Максимально возможное дробное число зависит от комплектации компьютера. На 64x разрядных процессорах оно составляет «1,8E308». Как можно заметить это гораздо больше чем максимальное целое. Причина кроется в том, что целые числа такого размера на практике не используются. Такие диапазоны необходимы для более точных вычислений, имеющих целую и дробную часть.

Важно
Если целое число выходит за максимально допустимый диапазон, то PHP автоматически преобразует его в дробное. Это необходимо для расширения и поддержания целостности результата вычисления.

//Создание переменной с дробным числом
$smallFloat = 125.25;
var_dump($smallFloat);
/*
* Результат:
* float(125.25)
*/

//Вывод в браузер результата арифметической
//операции целого числа и дробного
$firstInteger = 16000;
$secondFloat = 260.050;
echo $firstInteger + $secondFloat;
/*
* Результат:
* 16260.05
*/

//Переполнение максимально допустимого целого
//переводит его в числовой тип Float
$veryBigInteger = 912345678912345678912345679;
var_dump($veryBigInteger);
/*
* Результат:
* float(9.1234567891235E+26)
*/

Системы счисления и отрицательные числа

Чтобы сделать число отрицательным в языке программирования PHP, перед ним необходимо поставить знак «-». Отрицательное число может получиться и в результате вычислений.

//Создание переменной с отрицательным числом
$negativeInteger = -1250;
$negativeFloat = -6.25;
var_dump($negativeInteger);
var_dump($negativeFloat);
/*
* Результат:
* int(-1250)
* float(-6.25)
*/

//Получение негативного числа при вычислении
$calculation = (652*2) - 2000.50;
var_dump($calculation);
/*
* Результат:
* float(-696.5)
*/

В обычной жизни мы используем десятеричную систему счисления[2], но в программировании иногда необходимо оперировать восьмеричными, шестнадцатеричными и даже двоичными числами. Существует особый синтаксис их определения. Нужно отметить, что числа заданные в системах счисления, отличных от десятичной, не могут быть отрицательными.

Синтаксис различных систем счисления:

  • чтобы определить число как шестнадцатеричное, перед ним нужно задать символы «0x».
  • чтобы задать число в восьмеричной системе, набор символов заменяется на «0».
  • для двоичной системы счисления набор символов записывается как «0b».

Заметка
Все числа, заданные в системах счисления, отличных от десятичной, при выводе в браузер будут приведены к ней. Операции с числами осуществляются в той системе, в какой они заданы, но пользователю показываются в привычном всем виде.

//Определение числа в различных системах счисления
$decimal = 2016;
$octal = 03740;
$hex = 0x7E0;
$binary = 0b11111100000;

//В результате все строки будут содержать число '2016'
echo "Число по основанию '10': $decimal<br>";
echo "Число по основанию '8': $octal<br>";
echo "Число по основанию '16': $hex<br>";
echo "Число по основанию '2': $binary<br>";

Явное преобразование чисел

Тип результата вычислений может отличаться от ожидаемого. При делении двух целых чисел может получиться дробное число, если один операнд не делится на другой без остатка.

В PHP есть возможность явным образом перевести число из целого типа в дробный или наоборот. Для этого перед выражением необходимо указать языковую конструкцию (integer), если хотим привести результат к целому числу или (float), если хотим получить дробное число. При приведении дробного числа к целому оно будет округлено в меньшую сторону.

Данные конструкции воздействуют на строки и логический тип. Это возможно за счет встроенного в интерпретатор механизма неявного преобразование типов[3]. Если строка начинается с числа, то оно будет изъято, приведено к требуемому типу, а остальная часть строки отброшена. Логические значения преобразуются как «true => 1» и «false => 0».

//приведение целого числа к дробному
$simpleInteger = (float)145;
var_dump($simpleInteger);
/*
* Результат:
* float(145)
*/

//приведение дробного числа к целому
$simpleFloat = (int)16.6;
var_dump($simpleFloat);
/*
* Результат:
* int(16)
*/

//Приведение логического типа к числу
$booleans = ['true' => (int)true, 'false' => (int)false,];
var_dump($booleans);
/*
* Результат:
* array(2) {
*     ["true"] => int(1)
*     ["false"] => int(0)
* }
*/

//Приведение строки к числовому типу
$strings = [(int)"156 долларов", (int)"Просто текст",];
var_dump($strings);
/*
* Результат:
* array(2) {
*     [0]=> int(156)
*     [1]=> int(0)
* }
*/

Термины, использованные в статье

  1. Простой тип данных — это данные, которые нет смысла дробить. К ним относятся строки, целые числа, десятичные числа, булевы значения и null. Простые типы данных участвуют в построении составных (сложных типов данных).
  2. Система счисления — метод записи и представления чисел. Ярким примером являются римские цифры. В них каждое новое число записывается знаком нового числа, следующего за повторением предыдущего. При этом, если большая цифра стоит перед меньшей, то они складываются.
  3. Преобразование типов — внутренняя операция интерпретатора, которая позволяет двум различным типам данных участвовать в общем контексте программной операции. Как пример можно привести сложение строки «12» с числом 12. В результате получится число «24».

Последние публикации