如何在PHP(v5.4.3)中逻辑AND两个浮点值?
$a = 16710107135;
$b = 4294967296;
$result = (float)$a & (float)$b;
echo $result;
以上将始终显示0但实际上应显示4294967296。 我也尝试将“settype”所有变量都浮动但结果相同。
如果相关,则它在64位Windows 2008 R2服务器上运行,IIS 7.5,PHP为32位。
答案 0 :(得分:1)
&
运算符首先将其参数转换为整数,然后执行操作。换句话说,您的浮动转换会立即转换回整数。
4294967296转换为32位整数溢出为0,因此&
操作的结果为0。
如果您在64位计算机上运行,则该值适合64位整数并给出预期结果4294967296.
编辑:如果你需要比机器的“位数”更多的精度,你可以使用GMP编译PHP并使用这些函数。