php双溢出问题

时间:2010-12-02 22:19:23

标签: php post casting floating-point double

我确信这很简单,但我找不到答案。

我将一个double传递给PHP页面,并使用代码检索它:

$timestamp = $_POST['timestamp'];

PHP脚本将传递的数字(1291328282)更改为-1456872199。代码:

$timestamp = (float) $_POST['timestamp'];

有相同的结果。

2 个答案:

答案 0 :(得分:0)

在声明变量后如何处理数据?通过表单提交的所有内容都是字符串。 PHP将数据作为字符串放入$ _POST(数组除外)。 $ timestamp在声明时应具有正确的值,因为字符串不像整数那样受约束。在声明它之后你用$ timestamp 做什么是可能导致PHP匆匆离开的。

答案 1 :(得分:0)

PHP没有区别。 'float','double'或'real'是相同的数据类型。

$_POST['timestamp'];如果1291328282的值不是双倍,而是int,则UNIX_TIMESTAMP看起来不会与EPOCH混淆。

我不确定你希望得到什么,但我认为你想要:

$timestamp = (int)$_POST['timestamp'];

一点额外的知识:

当从float转换为字符串后,将删除尾随零。

示例(5.3。^)

echo (string)5.00500; // outputs 5.005
echo (string)30.0000; // outputs 30

您想要做的是:

$timestamp = abs((int)$_POST['timestamp']);