首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 數值型別深度解析:整數、浮點數、布林與型別檢查實務

     編輯:PHP 相關知識

PHP 型別系統概覽

PHP 8 內建 8 種原始型別:

  • 標量:int、float、bool、string
  • 複合:array、object
  • 特殊:resource、null

變數型別由賦值決定,無需宣告。

整數

表示法

<?php
$a = 1234;      // 十進制
$a = -123;      // 負數
$a = 0123;      // 八進制(前綴 0)= 83
$a = 0x1A;      // 十六進制(前綴 0x)= 26
$a = 0b1010;    // 二進制(PHP 5.4+,前綴 0b)= 10
?>

範圍與溢位

  • 平台相關:32 位系統約 ±21 億,64 位系統 ±9×10¹⁸
  • 超出範圍自動轉為 float
  • 常數 PHP_INT_MAX、PHP_INT_SIZE 取得限制

整數除法

PHP 無整除運算子,1/2 = 0.5。取整方法:

<?php
echo (int) (5/2);   // 2
echo 5 >> 1;        // 2(位移)
echo intdiv(5, 2);  // 2(PHP 7+ 推薦)
?>

浮點數

表示法

<?php
$f = 1.234;
$f = 1.2e3;    // 1200
$f = 7E-10;    // 0.0000000007
?>

精度陷阱

<?php
echo 0.1 + 0.7; // 0.79999999999999
echo floor((0.1+0.7)*10); // 7 ≠ 8

// 正確比較
function floatEquals($a, $b, $epsilon = 1e-10) {
    return abs($a - $b) < $epsilon;
}
// 或使用 BCMath 高精度
echo bcadd('0.1', '0.7', 1); // 0.8
?>

布林值

最簡單型別,僅 true/false(大小寫不敏感)。

自動轉為 false 的值

  • false、0、0.0、""、"0"
  • []、null
  • 無屬性物件、SimpleXML 空節點

所有其他值(含資源)皆為 true。

型別檢查與獲取

<?php
$v = 42;
var_dump(gettype($v));        // "integer"(注意:float 回傳 "double")
var_dump(get_debug_type($v)); // "int"(PHP 8+ 推薦,更符合型別宣告)

// 邏輯判斷用 is_* 系列
if (is_int($v)) { /* ... */ }
if (is_float($v)) { /* ... */ }
if (is_bool($v)) { /* ... */ }
?>

實務建議

  • 金額計算:以「分」為單位存整數,或用 BCMath/GMP 擴展
  • 型別宣告(PHP 7+):function add(int $a, int $b): int 讓引擎自動強制轉型
  • 嚴格模式:declare(strict_types=1); 禁止隱性轉換
  • 避免直接比較浮點數,封裝比較函數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved