Php 菲律宾兰特(100000000000999999999)返回-114888782“;

Php 菲律宾兰特(100000000000999999999)返回-114888782“;,php,Php,因此,我有一个PHP脚本: <? rand(1000000000000,9999999999999); 有人知道发生了什么事吗 PHP:5.2.17 操作系统:在Debian Squeeze和Windows 7上测试,均为64位 解决方案(解决方案) 我认为100000000000不是一个有效的整数 输出 getrandmax(); 使用getrandmax()查看可以从rand()获得的最大值,这显然是一个溢出问题 你可以使用这个整数中的2个,然后做一个更长的整数,用rand来表

因此,我有一个PHP脚本:

<?
rand(1000000000000,9999999999999);
有人知道发生了什么事吗


PHP:5.2.17

操作系统:在Debian Squeeze和Windows 7上测试,均为64位


解决方案(解决方案)
我认为100000000000不是一个有效的整数

输出

getrandmax();
使用getrandmax()查看可以从rand()获得的最大值,这显然是一个溢出问题


你可以使用这个整数中的2个,然后做一个更长的整数,用rand来表示6位数,再用rand来表示7位数,这是个好主意。

使用像或这样的bignum库。GMP更新了,似乎有更好的API,但这只是我的观点,我觉得它好像溢出了。你检查过PHP_INT_MAX吗?也许出于某种原因,您正在超过int max,即使它在64位溢出上应该更大,加上100000000000>99999999999确实无法工作的事实。我的坏。。。两个数字都是13位数。编辑PHP可以生成的最大随机数为2147483647(在某些系统上为32767),因此无法生成13位随机数。但您可以检查此答案,以了解解决方案2147483647。我怎么增加这个数呢?我不相信你可以,但是你可以用这个整数的2来做一个更长的整数,用rand来表示6位数,再用rand来表示7位数,这只是一个想法。64位硬件上的64位php可能会有所帮助-它肯定会提供64位整数(这个数字是最大32位有符号整数值)我这里的应该是64位硬件。算了吧,不管怎样。。。我刚刚做了rand().rand(),一个是4位,另一个是9位。它起作用了。谢谢,还有另一个答案是+5和我的+1哈哈,是的,2147483647。今天没汤给我,是吗?我要在这里工作。。。这个自动取款机我不需要什么花哨的东西。谢谢
<?
echo rand(10000,99999).rand(10000000,99999999);
getrandmax();