0

如何在 PHP (v5.4.3) 中对两个浮点值进行逻辑与运算?

$a = 16710107135;
$b = 4294967296;
$result = (float)$a & (float)$b;
echo $result;

上面将始终显示 0,但实际上应该显示 4294967296。我还尝试将所有变量“设置类型”为浮动,但结果相同。

如果相关,则它运行在具有 IIS 7.5 的 64 位 Windows 2008 R2 服务器上,而 PHP 是 32 位的。

4

1 回答 1

1

运算符首先将&其参数转换为整数,然后执行操作。换句话说,您的浮点转换会立即转换回整数。

4294967296 转换为 32 位整数溢出为 0,因此&运算结果为 0。

如果您在 64 位计算机上运行,​​则该值适合 64 位整数并给出预期结果 4294967296。

编辑:如果您需要比机器的“位数”更多的精度,您可以使用GMP编译 PHP并使用这些函数。

于 2013-06-12T06:27:56.063 回答