| PHP Ръководство | ||
|---|---|---|
| Предишна страница | Глава 11. Типове | Следваща страница |
Целочислено е всяко число от множеството Z = {..., -2, -1, 0, 1, 2, ...}.
Вж. също: Цели числа с произволна дължина / GMP, Числа с плаваща запетая и Произволна точност / BCMath
Целите числа могат да бъдат дефинирани в десетична (с основа 10), шестнайсетична (с основа 16) или осмична (с основа 8) бройна система, незадължително предшествани от знак (- или +).
Ако използвате осмична бройна система, трябва да предшествате числото с 0 (нула), а за да използвате шестнайсетична система, трябва да го предшествате с 0x.
Ако укажете число извън границите на целочисления тип, то ще бъде интерпретирано като число с плаваща запетая. Също така, ако извършите операция, чийто резултат е число извън границите на целочисления тип, отново ще бъде върнато в плаващ тип.
<?php $large_number = 2147483647; var_dump($large_number); // изход: int(2147483647) $large_number = 2147483648; var_dump($large_number); // изход: float(2147483648) // работи също за цели числа, указани в шестнадесетична система, в интервала от 2^31 до 2^32-1: var_dump( 0xffffffff ); // output: float(4294967295) // не работи за цели числа, указани в шестнадесетична система, за стойности над 2^32-1: var_dump( 0x100000000 ); // изход: int(2147483647) $million = 1000000; $large_number = 50000 * $million; var_dump($large_number); // изход: float(50000000000) ?> |
| Внимание |
|
За нещастие, в PHP съществуваше грешка, така че това не работи винаги както трябва, когато са намесени отрицателни числа. Например: когато правите -50000 * $million, резултатът ще бъде -429496728. Все пак, когато и двата операнда са положителни, няма проблем. Грешката е поправена в PHP 4.1.0. |
В PHP няма оператор за целочислено деление. 1/2 дава плаващо 0.5. Можете да преобразувате стойността до цяло число, така че тя винаги да се закръгля надолу, или пък да използвате функцията round().
За да превърнете изрично стойност в цяло число, използвайте преобразуването (int) или (integer). В повечето случаи обаче няма нужда да се използва преобразуване, понеже стойността ще бъде преобразувана автоматично, когато даден оператор, функция или контролна структура изискват целочислен аргумент. Можете също да превърнете стойност в цяло число посредством функцията intval().
Вж. също Манипулации с типове.
FALSE ще даде 0 (нула), а TRUE ще даде 1 (едно).
При превръщане от плаващо в цяло, числото ще бъде закръглено към нулата (надолу).
Ако плаващото е извън границите на цяло число (обикновено +/- 2.15e+9 = 2^31), резултатът е недефиниран, тъй като плаващото не е имало достатъчно точност, за да даде правилен целочислен резултат. В този случай няма да бъде изведено нито предупреждение, нито дори и съобщение!
Вж. Превръщане на низ в число
| Внимание |
|
Поведението при превръщане от други типове в цяло число е недефинирано. В момента, поведението е същото, както ако стойността първо е била превърната в булев. Все пак, не разчитайте на това поведение, тъй като в бъдеще то може да се промени без предупреждение. |
| Предишна страница | Начало | Следваща страница |
| Булев тип | Начало на раздела | Числа с плаваща запетая |