php int型別思索

2021-08-31 00:08:28 字數 859 閱讀 3234

起因

業務涉及了一組大整數的累加和,每個整數大約9位數,每組有幾百個數字,擔心數字溢位,所以了解下php int型別的範圍。

測試根據php官方文件,我的機器是64位,所以int範圍應該是在(-263 -1 ) 到 (263 - 1)

整型數的字長和平台有關,儘管通常最大值是大約二十億(32 位有符號)。64 位平台下的最大值通常是大約 9e18,除了 windows 下 php 7 以前的版本,總是 32 位的。

所以我做了如下測試

$num

=pow(2

,63)-

1;var_dump

($num

); exit;

輸出

double

(9.2233720368548e+18

)

奇怪,結果竟然是浮點數,這個明顯是php解析器發現資料溢位後自動使用了double型別。

仔細思考原因如下:

263本身已經超過了int的表示範圍,php將其解釋為double,之後再如何運算的結果都是double

所以我修改了下**

$nums

=pow(2

,62)-

1+pow(2,

62);var_dump

($num

); exit;

輸出

int

(9223372036854775807

)

到此,證實了php int型別最大值為263 - 1。

關於php int 型別

在寫介面的時候經常需要對php的數字進行處理,當客戶端傳送資料過來的時候都認為資料是不可信的。如果是整數的話一般直接強轉,例如 num int num 如果是乙個浮點數的話,一般判斷是否為數字例如 is numeric num 但是使用 int 強行轉換真的安全嗎?php官網說 如下解釋 整型數的字...

php int怎麼轉日期

php int轉日期的方法 1 通過 lasttime time 新增乙個time時間戳 2 使用 date y m d lasttime 方法轉換成日期格式即可。php int怎麼轉日期?php把int型別轉換成時間型別 這次做專案遇到了時間戳轉換的問題 資料庫設計的時間戳為int格式的,所有需要...

專案思索點滴

dwater 2005 04 26 2003 年度建議 1 加強對單元測試的重視,鼓勵程式設計師進行嚴格的單元測試,測試 入庫 2 對每個專案安排全職人員扮演 客戶 的角色,捕獲需求 編寫功能測試,進行業務決策 3 整個 系統盡早地 小步驟地整合,以早日暴露風險 穩步前進 4 減小同一專案組相關人員...