uznay-chto-hochesh.narod.ru

-сайт для интересующихся людей

Учебник - справочник по PHP.

Здесь Вы найдете что хотели

Меню сайта
Главная
Введение
Справочник языка
Возможности РНР
Функции (справочник)
Расширение РНР 4.0
F.A.Q. частые вопросы
Приложения
Алфавитный указатель
Друзья сайта
сделай сайт сам! пособие по html
изучение html и web-дизайна для новичков
Бесплатная отправка смс на все операторы
Реклама
 
Назад Глава 6. Типы Вперёд

Целые числа

integer это число из набора Z = {..., -2, -1, 0, 1, 2, ...}

См. также: Целые числа произвольного размера и Числа с плавающей точкой

Синтаксис

Целые числа могут специфицироваться в десятеричной (база 10), 16-ричной (база 16) или 8-ричной (база 8) нотации с необязательным знаком (- или +).

Если вы используете 8-ричную нотацию, первым символом числа должен быть 0 (нуль), для 16-ричной нотации первыми символами числа будут 0x.
Пример 6-1. Целочисленные литералы
$a = 1234; # 10-ричное число
$a = -123; # отрицательное число
$a = 0123; # 8-ричное число (экивалентно 10-ричному 83)
$a = 0x1A; # шестнадцатеричное число (экивалентно 10-ричному 26)

Размер integer зависит от платформы, хотя максимальное значение около 2 миллионов является обычным (то есть 32-битное знаковое). PHP не поддерживает беззнаковые integer.

Переполнение

Если вы специфицируете число за рамками диапазона типа integer, оно будет интерпретировано как float. Также, если вы выполняете операцию, которая даёт в результате число за пределами диапазона типа integer, будет возвращено float.

$large_number =  2147483647;
var_dump($large_number);
// на выходе: int(2147483647)

$large_number =  2147483648;
var_dump($large_number);
// на выходе: float(2147483648)

// это подходит также для специфицированных 16-ричных чисел:
var_dump( 0x80000000 );
// на выходе: float(2147483648)

$million = 1000000;
$large_number =  50000 * $million;
var_dump($large_number);
// на выходе: float(50000000000)

Предупреждение!

К сожалению, в РНР был замечен bug, поэтому не всегда была корректна работа с отрицательными числами. Например: если выполнить -50000 * $million, результат будет
-429496728. Однако, когда оба операнда - положительные, проблем не возникает.

Это устранено в PHP 4.1.0.

В PHP нет операции целочисленного деления. 1/2 даст float 0.5.

var_dump( 25/7 );
// на выходе: float(3.5714285714286)

Конвертация в integer

Для явной конвертации значения в integer используйте приведение (int) или (integer). Однако в большинстве случаев вам нет необходимости использовать приведение/cast, поскольку значение будет конвертировано автоматически, если операция, функция или структура управления требует integer-аргумента.

См. также Трюки с типами.

Из boolean

FALSE даст 0 (нуль), а TRUE даст 1 (единицу).

Из float

При конвертации float в integer, число округляется в сторону нуля.

Если float выходит за диапазон integer (обычно это +/- 2.15e+9 = 2^31), результат будет неопределённым, поскольку float не имеет достаточной точности для выдачи точного integer-результата. В этом случае не будет выдано ни предупреждения, ни даже какого-либо уведомления!

Предупреждение!

Никогда не приводите неизвестную дробь к integer, так как это может дать непредсказуемый результат.
echo (int) ( (0.1+0.7) * 10 ); // выведет 7!

См. дополнительно предупреждение о числах с плавающей точкой.

Из string

См. Конвертация строк

Из других типов

Внимание!

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

Назад Оглавление Вперёд
Булев Вверх Числа с плавающей точкой

Хостинг от uCoz