如何在 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 位的。
如何在 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 位的。
运算符首先将&
其参数转换为整数,然后执行操作。换句话说,您的浮点转换会立即转换回整数。
4294967296 转换为 32 位整数溢出为 0,因此&
运算结果为 0。
如果您在 64 位计算机上运行,则该值适合 64 位整数并给出预期结果 4294967296。
编辑:如果您需要比机器的“位数”更多的精度,您可以使用GMP编译 PHP并使用这些函数。