16

我正在尝试,但无法存储大额价值

$var = rand(100000000000000,999999999999999);
echo $var; // prints a 9 digit value(largest possible)

如何获得期望值?

4

4 回答 4

20

手册

整数的大小取决于平台,尽管通常值约为 20 亿的最大值(即 32 位有符号)。64 位平台的最大值通常约为 9E18。PHP 不支持无符号整数。自 PHP 4.4.0 和 PHP 5.0.5 起,可以使用常量 PHP_INT_SIZE 确定整数大小,使用常量 PHP_INT_MAX 确定最大值。

...

如果 PHP 遇到超出整数类型范围的数字,它将被解释为浮点数。此外,导致数字超出整数类型范围的操作将改为返回浮点数。

BC MathGMP是(唯一?)操纵此限制的方法。

于 2011-12-27T17:02:01.160 回答
5

PHP 整数通常是 32 位的。其他包提供更高精度的整数: http: //php.net/manual/en/language.types.integer.php

于 2011-12-27T16:59:42.477 回答
5

如果您需要处理非常大的数字,我发现 BC Math 取得了成功。这是您需要了解的所有内容的链接:

http://php.net/manual/en/book.bc.php

于 2011-12-27T17:01:21.380 回答
1

如果您想生成数字并作为本机类型进行操作,您不能使用大多数 PHP 安装(您有 32 位或 64 位int,没有别的),正如其他答案已经说明的那样。但是,如果您只是生成一个数字并想要传递它,那么一个可能的技巧就是连接字符串:

$var = rand(0,PHP_INT_MAX).str_pad(rand(0, 999999999), 9, 0, STR_PAD_LEFT);
echo $var;

在 PHP 使用 32 位整数的平台上,这允许您获得大于 32 位(> 10 个小数位)的近似随机整数(作为字符串)。当然,这种结构存在偏差,这意味着您不会以相同的概率覆盖所有数字。调用的限制rand()遵循正常的十进制规则,因此可以轻松调整所需数字的上限。

如果您所做的只是存储/传输/显示此值,则该字符串会很好。平等和大于/小于测试也将起作用。只是不要用它做任何数学运算。

于 2015-09-08T04:30:42.817 回答