浮動

$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 函式。