PHP 中 int 和 bigint 均為整數類型。
int 型變量是 32 位有符號整數,其取值范圍大約在 -2,147,483,648 到 2,147,483,647 之間,可以存儲諸如 123、-456、0 等整數。
$a = 123; $b = -456; $c = 0; var_dump($a, $b, $c);
但是如果要存儲超過 int 取值范圍的整數,就需要使用 bigint。
bigint 是 PHP GMP 庫提供的高精度計算庫,可以存儲任意大的整數。例如,下面的代碼可以使用 bigint 存儲一個 1000 位的整數:
$bigNum = gmp_init('1234567890'); for ($i = 1; $i< 1000; $i++) { $bigNum = gmp_add($bigNum, $bigNum); } echo gmp_strval($bigNum);
可以通過 gmp_strval 函數將 bigint 轉為字符串,也可以使用其他函數進行高精度的計算,例如:
$a = gmp_init('123456789'); $b = gmp_init('987654321'); $c = gmp_add($a, $b); $d = gmp_mul($a, $b); $e = gmp_pow($a, 10); var_dump(gmp_strval($c), gmp_strval($d), gmp_strval($e));
需要注意的是,使用 GMP 擴展會增加代碼的復雜度和運行時間,因此只在必要時使用。