我有这些代码,问题是它开始提供$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;
答案 0 :(得分:3)
您遇到integer overflow的情况,因为PHP的整数的最大值是2 ^ 31-1,其值为2147483647. PHP仅通过将值限制到它们的边界边缘来处理整数溢出超出。
要解决此问题,您可以使用float,它具有更大范围的值。有几种方法可以将数字声明为浮点数,例如使用E表示法或通过强制转换,如下所示。
$v = isset($_GET['v']) ? (float) $_GET['v'] : 3E9;
答案 1 :(得分:2)
2147483647是整数限制。将数据类型更改为bigint
或float
。
答案 2 :(得分:2)