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
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 11-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.
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.
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.
|
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.
|