Integer 整型

高洛峰
發布: 2016-10-20 15:02:13
原創
1452 人瀏覽過

Integer 整數


一個 integer 是集合 ? = {..., -2, -1, 0, 1, 2, ...} 中的一個數字。


請參閱:

任意長度整數/GMP    

浮點型   

任意精確度使用十進制,十六進制,八進制或二進位表示,前面可以加上可選的符號(- 或+)。

二進位表達的 integer 自 PHP 5.4.0 起可用。


要使用八進位表達,數字前必須加上    0(零)。要使用十六進位表達,數字前必須加上    0x。要使用二元表達,數字前必須加上    0b。


Example #1 整數文字表達

<?php
$a = 1234; // 十进制数
$a = -123; // 负数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
?>
登入後複製

   

 

. -9]*

            | 0

hexadecimal : 0[xX][0-9a-fA-F]+

octal       : 0[0-7]+


binary                 | [+- ]?hexadecimal

            | [+-]?octal

         ¢二十億(32 位有符號) 。 64    位平台下的最大值通常是約 9E18。 PHP     不支援無符號整數。 Integer 值的字長度可用常數    PHP_INT_SIZE來表示,自    PHP 4.4.0 和 PHP 5.0.5後,最大值可用常數 PHP_INT_MAX 來表示。






如果向八進制數傳遞了一個非法數字(即 8 或 9),則後面其餘數字會被忽略。




Example #2 八進位數的怪事

<?php
var_dump(01090); // 八进制 010 = 十进制 8
?>
登入後複製

   


 

解釋為    float。同樣如果執行的運算結果超出了    integer 範圍,也會回傳 float。

Integer 整型

Example #3 32 位元系統下的整數溢位

<?php
$large_number = 2147483647;
var_dump($large_number);                     // int(2147483647)
 
$large_number = 2147483648;
var_dump($large_number);                     // float(2147483648)
 
$million = 1000000;
$large_number =  50000 * $million;
var_dump($large_number);                     // float(50000000000)
?>  
Example #4 64 位系统下的整数溢出
<?php
$large_number = 9223372036854775807;
var_dump($large_number);                     // int(9223372036854775807)
 
$large_number = 9223372036854775808;
var_dump($large_number);                     // float(9.2233720368548E+18)
 
$million = 1000000;
$large_number =  50000000000000 * $million;
var_dump($large_number);                     // float(5.0E+19)
?>
登入後複製

   


PHP 中沒有整數的運算子。 1/2 產生出 float    0.5。數值可以捨棄小數部分強制轉換為 integer,或使用     round() 函數可以更好地進行四捨五入。

<?php
var_dump(25/7);         // float(3.5714285714286) 
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7));  // float(4) 
?>
登入後複製

   


轉換為整數

要明確地將一個值轉換成整數,用值不過大多數情況下都不需要強制轉換,因為當運算符,函數或流程控制需要一個    integer 參數時,數值會自動轉換。也可以透過函數    intval() 來將一個值轉換成整數型。

參見:型別轉換的判別。

從布林值轉換


FALSE 將產生出 0(零),TRUE 將產生出     1(壹)。

從浮點型轉換


當從浮點數轉換成整數時,將向下取整。


如果浮點數超出了整數範圍(32 位元平台下通常為    +/- 2.15e+9 = 2^31,64 位元平台下通常為 +/- 9.22e+18 = 2^63),則結果為未定義,因為沒有足夠的精確度給出一個確切的整數結果。在此情況下沒有警告,甚至沒有任何通知!


絕不會將未知的分數強制轉換為 integer,有時會導致不可預料的結果。

<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7!
?>
登入後複製

   


 


請參考浮點數精確度的警告。


從字串轉換


請參考字串轉換為數值。

Integer 整型從其它類型轉換

Caution    


沒有定義從其類型中定義從其類型的它類型。不要依賴任何現有的行為,因為它會未加通知地改變。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板