echo intval(hexdec('c0199506cb5dd57f')); // -4604485287595354112
当我们在客户端做同样的事情时还有另一个:
client on objective-c returns -4604485287595354753
client wrote on java returns -4604485287595354753
我认为这是因为整数变得溢出(PHP不支持有符号整数)和结果丢失准确性。
如何解决这个问题?
答案 0 :(得分:1)
“最大值取决于系统.32位系统的最大有符号整数范围为-2147483648到2147483647.因此,例如在这样的系统上,intval('1000000000000')将返回2147483647.最大有符号整数值对于64位系统是9223372036854775807。“
来自:http://php.net/manual/en/function.intval.php
一些解决方法是将值存储在字符串中,或将其拆分为多个可以重新组合在一起的部分。或者,有外部插件用于处理非常大的数字。
哪种解决方案最好取决于使用的数字。