【问题标题】:PHP intval lose accuracy with big decimalPHP intval 失去精度与大小数
【发布时间】:2014-09-18 10:20:58
【问题描述】:
echo intval(hexdec('c0199506cb5dd57f')); // -4604485287595354112

当我们在客户端上做同样的事情时有另一个:

client on objective-c returns -4604485287595354753
client wrote on java returns  -4604485287595354753

我认为这是因为整数溢出(PHP 不支持有符号整数)并导致准确性丢失。

如何解决这个问题?

【问题讨论】:

    标签: php integer-overflow


    【解决方案1】:

    "最大值取决于系统。32位系统的最大有符号整数范围为-2147483648到2147483647。因此例如在这样的系统上,intval('1000000000000')将返回2147483647。最大有符号整数值对于 64 位系统是 9223372036854775807。”

    发件人:http://php.net/manual/en/function.intval.php

    一些变通方法是将值存储在字符串中,或​​者将其拆分为多个可以重新组合在一起的部分。或者,有用于处理非常大的数字的外部插件。

    哪种解决方案最好取决于数字的用途。

    【讨论】:

    • 另外,还有用于处理非常大的数字的外部插件。请告诉我有哪些插件?
    猜你喜欢
    • 2012-05-14
    • 1970-01-01
    • 2014-01-13
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 2014-12-09
    • 1970-01-01
    相关资源
    最近更新 更多