RSS

Компьютерная терминология    1_9  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  .....  A  Б  В  Г  Д  Ж  З  И  К  Л  М  Н  О  П  Р  С  Т  У  Ф  Х  Ц  Ч

Целые числа

   

Новости

Пригоден ли ребенок к школе: как проверяют дошкольников в Германии?
Mожно перестать быть "совой" и улучшить здоровье
Вpaчeбнaя тaйнa в Гepмaнии: poдитeли и дeти
Ученые в США рассказали о новом методе лечения ВИЧ
Американцы борются со старением, переливая себе кровь молодых
Четыре новые опасные инфекции, передаваемые половым путем
 
Учебник РНР
Назад Глава 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 даст float0.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. Однако не полагайтесь на это поведение, так как оно может быть изменено без предупреждения.


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

seo & website usability   inet   os faq   hardware faq   memory   video   cpu   hdd   mainboard faq   printer & scaner   modem   mobiles   hackzone

На главную | Cookie policy | Sitemap