【发布时间】:2012-01-28 15:32:25
【问题描述】:
我正在尝试,但无法存储大额价值
$var = rand(100000000000000,999999999999999);
echo $var; // prints a 9 digit value(largest possible)
如何得到想要的值?
【问题讨论】:
标签: php int unsigned-long-long-int
我正在尝试,但无法存储大额价值
$var = rand(100000000000000,999999999999999);
echo $var; // prints a 9 digit value(largest possible)
如何得到想要的值?
【问题讨论】:
标签: php int unsigned-long-long-int
PHP 整数通常为 32 位。其他包提供更高精度的整数:http://php.net/manual/en/language.types.integer.php
【讨论】:
如果您需要处理非常大的数字,我发现使用 BC Math 取得了成功。这是您需要了解的所有内容的链接:
【讨论】:
如果您想生成数字并将其作为本机类型进行操作,您不能使用大多数 PHP 安装(您有 32 位或 64 位 ints,没有其他),正如其他答案已经说明的那样。但是,如果您只是生成一个数字并想要传递它,那么一个可能的技巧就是连接字符串:
$var = rand(0,PHP_INT_MAX).str_pad(rand(0, 999999999), 9, 0, STR_PAD_LEFT);
echo $var;
在 PHP 使用 32 位整数的平台上,这允许您获得大于 32 位(> 10 个小数位)的近似随机整数(作为字符串)。当然,这种结构存在偏差,这意味着您不会以相同的概率覆盖所有数字。 rand() 调用的限制遵循正常的十进制规则,因此可以轻松调整所需数字的上限。
如果您所做的只是存储/传输/显示此值,则字符串会很好。平等和大于/小于测试也将起作用。只是不要用它做任何数学运算。
【讨论】: