![]() |
James Thornton |
| Internet Business Consultant | Call Toll Free: 1 (800) 409-2501 |
| About James | Google Profile | Electric Speed | The Electors | Juced | Contact Me |
|---|
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.
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.
$du¿a_liczba = 2147483647; var_dump($du¿a_liczba); // wynik: int(2147483647) $du¿a_liczba = 2147483648; var_dump($du¿a_liczba); // wynik: float(2147483648) // tak samo dzieje siê przy warto¶ciach szesnastkowych: var_dump( 0x80000000 ); // wynik: float(2147483648) $million = 1000000; $du¿a_liczba = 50000 * $million; var_dump($du¿a_liczba); // wynik: float(50000000000) |
| 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. |
Zobacz konwersja ³añcuchów znakó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. |
| Poprzedni | Spis tre¶ci | Nastêpny |
| Zmienne Logiczne (Boolowskie - boolean) | Pocz±tek rozdzia³u | Liczby zmiennoprzecinkowe (float) |
|
|
James Thornton, jamesthornton.com>Services: Internet Marketing Online |
Electric Speed: Web Page Usability |