Новые книги

Книга известного голливудского сценариста и преподавателя Памелы Дуглас – ценное пособие для тех, кто хочет попробовать себя в жанре, завоевавшем весь мир, а не так давно обретшем второе дыхание. Из низкопробного развлечения сериалы превратились в настоящее высокое искусство и бросили вызов традиционному киноформату. Автор погружает читателя в увлекательный мир, рассматривая создание сценария в комплексе, в том числе переговоры со студиями и телеканалами, различные варианты развития событий и пути преодоления типичных трудностей в условиях бешеных темпов развития телевидения и интернета. Памела Дуглас сама прошла все этапы карьеры сериального сценариста и достигла успеха и признания. Особую ценность книге придают интервью с ключевыми героями телевизионных драм – сценаристами и продюсерами. Книга, выдержавшая три издания, вооружает нас высококлассным инструментарием и «инсайдерской» информацией, используя которую читатель имеет отличные шансы войти в историю телеиндустрии и придумать своего уникального «Декстера».
Как часто вы беспокоитесь о целесообразности трат? Стоила ли покупка того или лучше было положить потраченную сумму на свой накопительный счет?

В этой книге Карл Ричардс, специалист по финансовому планированию, дает рекомендации о том, как отбросить в сторону эмоции и трезво посмотреть на свои желания приобретать и тратить, с чего начать первые шаги к осознанным расходам и, главное, как придерживаться этого плана. Вы откроете для себя, казалось бы, простые истины, которые помогут вам привести ваш бюджет в порядок, но удивитесь, почему до сих пор не придерживались их.

Целые Числа

Учебник РНР
Назад Глава 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. Однако не полагайтесь на это поведение, так как оно может быть изменено без предупреждения.


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