浮點型

浮點數(也叫浮點數,雙精度數或實數)可以用以下任何語法定義:

<?php
$a 
1.234;
$a 1.2e3;
$a 7E-10;
?>

形式上:

LNUM          [0-9]+
DNUM          ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM ( ({LNUM} | {DNUM}) [eE][+-]? {LNUM})

浮點數的字長和平台關聯,儘管通常最大值是 1.8e308 並具有 14 位十進位數字的精度(64 位 IEEE 格式)。

浮點數精度

顯然簡單的十進位分數如同 0.10.7 不能在不丟失一點點精度的情況下轉換為內定二進位的格式。這就會造成混亂的結果:例如,floor((0.1+0.7)*10) 通常會返回 7 而不是預期中的 8,因為該結果內定的表示其實是類似 7.9999999999...

這和一個事實有關,那就是不可能精確的用有限位數表達某些十進位分數。例如,十進位的 1/3 變成了 0.3333333. . .

所以永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。若果確實需要更高的精度,應該使用任意精度數學函數或是 gmp 函數

轉換為浮點數

若果希望瞭解有關何時和如何將字串轉換成浮點數的訊息,請查閱「將字串轉換為數值」一節。對於其它類型的值,其情況類似於先將值轉換成整型,然後再轉換成浮點。請參閱「轉換為整型」一節以取得更多訊息。自 PHP 5 起,若果試圖將物件轉換為浮點數,會發出一條知會。