比较php和sql中的大数字

时间:2010-07-28 17:53:39

标签: php sql numbers

我需要在php(长度为30位)中将非常大的数字与数据库中的2个数字进行比较。这是一个很好的方法吗?我尝试使用浮点数,但它不够精确,我不知道在php中使用大数字的好方法。

5 个答案:

答案 0 :(得分:2)

您是否尝试过使用字符串比较?只需确保每个数字都用零填充。

mysql> select "123123123123123123456456456"<"123123123123123123456456457";
+-------------------------------------------------------------+
| "123123123123123123456456456"<"123123123123123123456456457" |
+-------------------------------------------------------------+
|                                                           1 | 
+-------------------------------------------------------------+

Justed测试这个多达200多个字符,就像一个魅力。

答案 1 :(得分:1)

检查bcdcomp功能

答案 2 :(得分:0)

您可以改为比较字符串。

根据您从数据库中获取数据的方式,您可能希望在SQL语句中将整数显式转换为字符串类型。

除此之外,PHP中有几个库可以处理大整数,例如BCMathGMP

答案 3 :(得分:0)

在PHP中处理大量数字是通过两个库中的任何一个来完成的:GMP或BC Math。

我自己没有这样做,所以它可能不正确,但我认为你必须从GMP或BC Math中获取字符串结果,并将其提供给查询。确保将数字存储为bigint。

有趣的事实:您可能认为BigInt将被限制在大约20位数,并且您是对的,除了它有Mysql Magic的事实:

  

通过使用字符串存储,您始终可以在BIGINT列中存储精确的整数值。在这种情况下,MySQL执行字符串到数字的转换,不涉及中间双精度表示。

答案 4 :(得分:0)

如果他们非常大,我会将它们比作字符串。首先,如果一个比另一个长,它就赢了。如果它们的长度相同,则从左到右逐位进行比较 - 如果两个数字不同,则数字越大的数字越大。这当然是正整数。