逻辑和两个浮点值在PHP(32位)


Logical AND two float values in PHP (32 bit)

我如何逻辑和两个浮点值在PHP (v5.4.3)?

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

将始终显示0,但实际上应该显示4294967296。我也试过"settype"所有变量的浮动,但与相同的结果。

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

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

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

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

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