浮动
$float = 0.123;
由于历史原因,在浮动的情况下
gettype()
返回double
,而不是简单地浮动
浮点数是浮点数,与普通整数相比,它允许更高的输出精度。
浮点数和整数可以一起使用,因为 PHP 的变量类型是松散的:
$sum = 3 + 0.14;
echo $sum; // 3.14
php 不像其他语言那样将 float 显示为 float 数,例如:
$var = 1;
echo ((float) $var); //returns 1 not 1.0
警告
浮点精度
(来自 PHP 手册页 )
浮点数的精度有限。虽然它取决于系统,但由于舍入的顺序为 1.11e-16,PHP 通常会给出最大的相对误差。非基本算术运算可能会产生更大的误差,并且在复合多个运算时必须考虑误差传播。
另外,可以在基数 10 中精确表示为浮点数的有理数,如 0.1 或 0.7,没有精确表示为基数 2(二进制)中的浮点数,无论尾数的大小如何,它都在内部使用。。因此,它们不能在没有很小精度损失的情况下转换为它们的内部二进制对应物。这可能会导致令人困惑的结果:例如,floor((0.1 + 0.7)* 10)通常会返回 7 而不是预期的 8,因为内部表示将类似于 7.9999999999999991118 ….
因此,永远不要将浮点数结果信任到最后一位数,并且不要直接比较浮点数是否相等。如果需要更高的精度,可以使用任意精度数学函数和 gmp 函数。