一個 integer 是集合 Z = {..., -2, -1, 0, 1, 2, ...} 中的一個數。
參見任意長度整數(GMP),浮點數和任意精度數學庫(BCMath)。
整型值可以用十進位,十六進位或八進位符號指定,前面可以加上可選的符號(- 或是 +)。
若果用八進位符號,數字前必須加上 0(零),用十六進位符號數字前必須加上 0x。
例子 11-1. 整數文字表達
<?php $a = 1234; // 十進位數 $a = -123; // 一個負數 $a = 0123; // 八進位數(等於十進位的 83) $a = 0x1A; // 十六進位數(等於十進位的 26) ?>
|
|
在字面上,整型變量正式的結構可以為:
整型數的字長和平台有關,儘管通常最大值是大約二十億(32 位有符號)。PHP 不支援無符號整數。
警示 |
若果向八進位數傳遞了一個非法數字(即 8 或 9),則後面其餘數字會被忽略。
例子 11-2. 八進位數的怪事
<?php var_dump(01090); // 010 octal = 8 decimal ?>
|
|
|
若果給定的一個數超出了 integer 的範圍,將會被解釋為
float。同樣若果執行的運算結果超出了
integer 範圍,也會返回 float。
警示 |
不幸的是 PHP 中有個 bug,因此當有負數參與時結果並不總是正確。例如當運算
-50000 * $million 時結果是
-429496728。不過當兩個運算數都是正數時就沒問題。
這個問題已經在 PHP 4.1.0 中解決了。
|
PHP 中沒有整除的運算符。1/2 產生出 float
0.5。可以總是捨棄小數部分,或是使用 round() 函數。
要明示地將一個值轉換為 integer,用 (int) 或
(integer) 強制轉換。不過大多數情況下都不需要強制轉換,因為當運算符,函數或流程控制需要一個
integer 參數時,值會自動轉換。還可以通過函數
intval() 來將一個值轉換成整型。
參見類型戲法。
FALSE 將產生出 0(零),TRUE 將產生出
1(壹)。
當從浮點數轉換成整數時,數字將被取整(丟棄小數位)。
若果浮點數超出了整數範圍(通常為
+/- 2.15e+9 = 2^31),則結果不確定,因為沒有足夠的精度使浮點數給出一個確切的整數結果。在此情況下沒有警示,甚至沒有任何知會!
【譯者注】在 Linux 下返回結果是最小負數(-2147483648),而在
Windows 下返回結果是零(0)。
注意 |
沒有定義從其它類型轉換為整型的行為。目前的行為和值先轉換為布林值一樣。不過不要依靠此行為,因為它會未加知會地改變。
|