Liczby
całkowite
(
integer
)
Typ
integer
to
liczba
całkowita
,
należąca
do
przedziału
Z
=
{
...
,
-2
,
-1
,
0
,
1
,
2
,
..
.
}.
Zobacz
też
:
Liczby
całkowite
dużej
wielkości
oraz
Liczby
zmiennoprzecinkowe
Składnia
Liczby
całkowite
mogą
być
zapisane
w
notacji
dziesiętnej
(
opartej
na
10)
,
szesnastkowej
(opartej
na
16
)
lub
ósemkowej
(opartej
na
8)
,
opcjonalnie
poprzedzone
znakiem
(
-
lub
+
)
.
Aby
zapisać
liczbę
w
notacji
ósemkowej
,
należy
poprzedzić
właściwą
liczbę
symbolem
0
(
zero
)
.
W
notacji
szesnastkowej
liczbę
należy
poprzedzić
symbolem
0x
.
Przykład
7-1
.
Notacja
liczb
całkowitych
$a
=
1234
;
#
liczba
dziesiętna
$a
=
-123
;
#
ujemna
liczba
dziesiętna
$a
=
0123
;
#
liczba
ósemkowa
(odpowiednik
dziesiętnej
83
)
$a
=
0x1A
;
#
liczba
szesnastkowa
(odpowiednik
dziesiętnej
26
)
|
|
Maksymalna wielkość liczby całkowitej jest zależna od platformy
operacyjnej, zwykle jest to około dwa miliardy (jest to 32 bity
ze znakiem). PHP nie obsługuje liczb całkowitych bez znaku.
Wyjście
poza
zakres
liczb
całkowitych
W
przypadku
zapisania
liczby
całkowitej
wykraczającej
poza
zakres
typu
integer
,
liczba
ta
zostanie
potraktowana
jako
typ
float
.
Również
jeśli
rezultat
operacji
będzie
wykraczał
poza
typ
integer
,
jako
wynik
zostanie
zwrócony
typ
float
.
Ostrzeżenie
|
Niestety
,
błąd
w
PHP
powodował
czasem
nieprawidłową
pracę
z
liczbami
ujemnymi
.
Na
przykład
:
wynikiem
działania
-50000
*
$million
była
liczba
-429496728
.
Błąd
ten
pojawiał
się
tylko
przy
liczbach
ujemnych
i
nie
dotyczył
wartości
dodatnich
.
Powyższy
problem
został
rozwiązany
w
PHP
4.1.0
.
|
W
PHP
nie
ma
operatora
dzielenia
całkowitego
.
1
/
2
daje
wynik
typu
float
o
wartości
0.5
.
Konwersja
na
liczby
całkowite
Do
jawnej
konwersji
wartości
na
typ
integer
używa
się
operatora
rzutowania
(
int
)
lub
(integer
)
.
W
większości
przypadków
jednak
rzutowanie
nie
jest
potrzebne
,
gdyż
wartość
zostanie
skonwertowana
automatycznie
,
o
ile
operator
,
funkcja
lub
struktura
kontrolna
wymaga
argumentu
typu
integer
.
Zobacz
też
wykorzystywanie
typów
danych
.
FALSE
będzie
mieć
wartość
0
(
zero)
,
a
TRUE
będzie
mieć
wartość
1
(jeden
)
.
Przy
konwersji
z
liczb
zmiennoprzecinkowych
do
całkowitych
,
liczba
zostanie
zaokrąglona
w
dół
.
Jeśli
liczba
zmiennoprzecinkowa
jest
poza
zakresem
liczb
całkowitych
,
(
zwykle
+
/
-
2.15e+9
=
2^31
)
,
wynik
operacji
rzutowania
jest
niezdefiniowany
,
ponieważ
liczba
zmiennoprzecinkowa
nie
ma
odpowiedniej
precyzji
,
aby
zwrócić
dokładną
liczbę
całkowitą
.
W
tej
sytuacji
nie
pojawi
się
żadne
ostrzeżenie
ani
informacja
odnośnie
powstałego
błędu
!
Ostrzeżenie
|
Nigdy
nie
należy
rzutować
nieznanego
ułamka
do
typu
integer
,
gdyż
może
to
doprowadzić
do
otrzymania
nieprzewidywalnych
wyników
.
Więcej informacji na ten temat w rozdziale
precyzja liczb zmiennoprzecinkowych
.
|
Z
innych
typów
Uwaga
!
|
Wynik
konwersji
do
liczb
całkowitych
z
innych
typów
jest
nieokreślony
.
Obecnie
zachowanie
jest
takie
samo
,
jakby
zmienna
została
najpierw
skonwertowana
do
typu
boolowskiego
.
Nie
należy
jednak
polegać
na
tym
zachowaniu
,
gdyż
może
ono
ulec
zmianie
bez
żadnego
ostrzeżenia
.
|