下面的示例打印2147483647
代替13757966641806459594
爲什麼在類型轉換時PHP會縮短大量數據?
$i = '13757966641806459594';
echo (int) $i;
下面的示例打印2147483647
代替13757966641806459594
爲什麼在類型轉換時PHP會縮短大量數據?
$i = '13757966641806459594';
echo (int) $i;
2147483647爲最大32位帶符號整數的。在這種情況下,13757966641806459594的值大於PHP可以處理的值。有關如何處理溢出,您可以在PHP manual中閱讀更多內容。
那麼你不需要一個變量來獲得這種行爲,你可以像這樣'echo(int)'13757966641806459594';' –
@LoganMurphy非常真實。任何時候你處理一個整數,溢出都是可能的,編輯我的答案來刪除它。 –
的整數的大小是依賴於平臺的,雖然約兩十億的最大值是通常的值(這是32位帶符號的)。 PHP不支持無符號整數。整數大小可以使用常量PHP_INT_SIZE確定,最大值使用自PHP 4.4.0和PHP 5.0.5以來的常量PHP_INT_MAX。
使用64位系統來避免此問題。 (或者至少讓它變得非常不可能) – Spudley
投到一個浮動,你應該沒問題,或者你gmp_函數爲更高的精度數學。 – Orangepill
親愛的選民,請解釋你爲什麼倒票。這似乎是一個有意願的人回答的合理問題。 – IMB