1

我有这个代码,问题是它开始从$2,147,483,647我设置的地方3000000000给出输出$3,000,000,000

我想从我们在表格中设置的内容中取出,但是如果我们选择更高的$2,147,483,647内容,则从$2,147,483,647

这是现场演示:http ://deewayz.in/demo/

这是我的代码。

$v         = isset($_GET['v']) ? (int) $_GET['v'] : 3000000000;

第一次给出正确的。但是当我们改变形式的价值时,它会给出错误的输出。

例如检查这个:http ://deewayz.in/demo/index.php?v=3100000000&sv=5

提前致谢 :)

解决了:

$v         = isset($_GET['v']) ? (float) $_GET['v'] : 3000000000;
4

3 回答 3

3

您遇到了整数溢出的情况,因为 PHP 整数的最大值为 2^31-1,其计算结果为 2147483647。PHP 仅通过将值限制在超出边界的边缘来处理整数溢出。

为了解决这个问题,您可以使用具有更大范围值的float 。有几种方法可以将数字声明为浮点数,例如使用 E 表示法或通过强制转换,如下所示。

$v         = isset($_GET['v']) ? (float) $_GET['v'] : 3E9;
于 2012-10-09T06:29:02.140 回答
2

2147483647 是整数限制。将数据类型更改为bigintfloat

于 2012-10-09T06:26:58.690 回答
2

2,147,483,647 是 32 位整数可以容纳的最大值。对于更大的数字,您可能必须使用BCMathGMP扩展,或者尝试使用 64 位版本的 PHP。使用 float 也可能是一种可能性,因为它可以存储更长的数字(但是它们不再那么精确了)。

于 2012-10-09T06:27:20.890 回答