起因
業務涉及了一組大整數的累加和,每個整數大約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 減小同一專案組相關人員...