浮点数(Floating Point Numbers)


浮点数做为实数表达方式,按如下表示。

$float0 = 3.14;            // 3.14
$float1 = 3.14e3;          // 3140
$float2 = 3.14E-3;         // 0.00314

上述E3 (e3)是指10的3立方1000, E-3 (e-3)是指10的-3立方即1/1000。

在其他资料型中,转换为浮点数明示的型转换的运算符是float,同样不区分大小写。

$a = 0.1 / 0.3;
printf("%.20e\r\n", $a);   // print $a down to 20 places of decimals
[result]  
3.33333333333333370341e-1

就同在上面结果所示,小数点以下15位后面的值不正确。因以上限制不建议使用浮点数的直接比较演算。

  • NAN
    有时算出来的结果值会显示NAN。这是指在浮点数演算中不确切或是无法表达的数。此常数与包括自身的其他数的值比较是否相同的演算结果一向显示FALSE。
$float0 = acos(2);
if($float0 == $float0)
    echo "True\r\n";         // result: FALSE
else
    echo "float0\r\n";       // output: NAN
  • INF
    常数INF是指在超过浮点数演算中表现的范围的数。
$float0 = 1.8E+309;
echo "float0";             // output: INF