我需要在php(长度为30位)中将非常大的数字与数据库中的2个数字进行比较。这是一个很好的方法吗?我尝试使用浮点数,但它不够精确,我不知道在php中使用大数字的好方法。
答案 0 :(得分:2)
您是否尝试过使用字符串比较?只需确保每个数字都用零填充。
mysql> select "123123123123123123456456456"<"123123123123123123456456457";
+-------------------------------------------------------------+
| "123123123123123123456456456"<"123123123123123123456456457" |
+-------------------------------------------------------------+
| 1 |
+-------------------------------------------------------------+
Justed测试这个多达200多个字符,就像一个魅力。
答案 1 :(得分:1)
检查bcdcomp功能
答案 2 :(得分:0)
答案 3 :(得分:0)
在PHP中处理大量数字是通过两个库中的任何一个来完成的:GMP或BC Math。
我自己没有这样做,所以它可能不正确,但我认为你必须从GMP或BC Math中获取字符串结果,并将其提供给查询。确保将数字存储为bigint。
有趣的事实:您可能认为BigInt将被限制在大约20位数,并且您是对的,除了它有Mysql Magic的事实:
通过使用字符串存储,您始终可以在BIGINT列中存储精确的整数值。在这种情况下,MySQL执行字符串到数字的转换,不涉及中间双精度表示。
答案 4 :(得分:0)
如果他们非常大,我会将它们比作字符串。首先,如果一个比另一个长,它就赢了。如果它们的长度相同,则从左到右逐位进行比较 - 如果两个数字不同,则数字越大的数字越大。这当然是正整数。