2013-08-06 16 views
-1

下面的示例打印2147483647代替13757966641806459594爲什麼在類型轉換時PHP會縮短大量數據?

$i = '13757966641806459594'; 
echo (int) $i; 
+0

使用64位系統來避免此問題。 (或者至少讓它變得非常不可能) – Spudley

+0

投到一個浮動,你應該沒問題,或者你gmp_函數爲更高的精度數學。 – Orangepill

+0

親愛的選民,請解釋你爲什麼倒票。這似乎是一個有意願的人回答的合理問題。 – IMB

回答

6

2147483647爲最大32位帶符號整數的。在這種情況下,13757966641806459594的值大於PHP可以處理的值。有關如何處理溢出,您可以在PHP manual中閱讀更多內容。

+1

那麼你不需要一個變量來獲得這種行爲,你可以像這樣'echo(int)'13757966641806459594';' –

+0

@LoganMurphy非常真實。任何時候你處理一個整數,溢出都是可能的,編輯我的答案來刪除它。 –

0

PHP Manual

的整數的大小是依賴於平臺的,雖然約兩十億的最大值是通常的值(這是32位帶符號的)。 PHP不支持無符號整數。整數大小可以使用常量PHP_INT_SIZE確定,最大值使用自PHP 4.4.0和PHP 5.0.5以來的常量PHP_INT_MAX。

相關問題