Lecture
An integer is a number from the set Z = {..., -2, -1, 0, 1, 2, ...}, usually 32 bits long (from –2,147,483,648 to 2,147,483,647).
Integers can be specified in decimal, hexadecimal or octal notation, optionally, with a preceding (- or +) sign.
If you are using the octal number system, you must precede the number 0 (zero), to use the hexadecimal system, you must put it in front of the number 0x .
<?php
$a = 1234; // десятичное число
$a = -123; // отрицательное число
$a = 0123; // восьмеричное число (эквивалентно 83 в десятичной системе)
$a = 0x1A; // шестнадцатеричное число (эквивалентно 26 в десятичной системе)
?>
Formally, the possible structure of integers is:
десятичные : [1-9][0-9]*
| 0
шестнадцатеричные : 0[xX][0-9a-fA-F]+
восьмеричные : 0[0-7]+
целые:
[+-]?десятичные
| [+-]?шестнадцатеричные
| [+-]?восьмеричные
The size of the whole depends on the platform, although, as a rule, the maximum value is about two billion (this is a 32-bit sign). PHP does not support unsigned integers.
If you define a number that exceeds the limits of the integer type, it will be interpreted as a floating point number. Also, if you use an operator whose result is a number that exceeds the integer limits, a floating point number will be returned instead.
<?php
$large_number = 2147483647;
var_dump($large_number);
// вывод: int(2147483647)
$large_number = 2147483648;
var_dump($large_number);
// вывод: float(2147483648)
// это справедливо и для шестнадцатеричных целых:
var_dump( 0x80000000 );
// вывод: float(2147483648)
$million = 1000000;
$large_number = 50000 * $million;
var_dump($large_number);
// вывод: float(50000000000)
?>
There is no integer division operator in PHP. The result 1/2 will be a floating point number 0.5 . You can cast a value to a whole, which always rounds it down, or use the round () function.
<?php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?>
To undoubtedly convert a value to an integer, use a cast (int) or (integer) . However, in most cases you do not need to use a cast, since the value will be automatically converted if an operator, function, or control construct requires an integer argument. You can also convert a value to an integer using the intval () function.
FALSE is converted to 0 (zero), and TRUE is converted to 1 (one).
Convert type integer to type float
When converting from a floating point number to an integer, the number will be rounded to zero .
If the floating-point number exceeds the limits of the integer (as a rule, it is +/- 2.15e + 9 = 2 ^ 31 ), the result will be undefined, since the integer does not have sufficient accuracy to return the correct result. In this case, neither a warning nor even a comment will be displayed!
Attention! Never give an unknown fraction to a whole, as it can sometimes give unexpected results (more about this feature here) An example of an erroneous conversion:
<?php
echo (int) ( (0.1+0.7) * 10 ); // выводит 7! (ошибка!)
?>
Convert integer type to string type
See: Converting Strings to Numbers
Conversion of integer type to other data types
For other types, the integer type conversion behavior is undefined.
Comments
To leave a comment
Running server side scripts using PHP as an example (LAMP)
Terms: Running server side scripts using PHP as an example (LAMP)