Float

Tipe ini sering disebut dengan floats, doubles atau real numbers. Tipe ini dapat ditetapkan dengan syntax berikut :

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

Umumnya, struktur float adalah seperti berikut :

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

Sama seperti integer, ukuran besarnya nilai maksimum tipe float tergantung pada platform yang digunakan.

Meskipun tergantung pada sistem, umumnya PHP menggunakan format double precision.

Untuk mengkonversi tipe lain ke tipe float terlebih dahulu harus dikonversi ke tipe integer.

Untuk menguji persamaan nilai yang bertipe float, tidak bisa dibandingkan dengan operator equal (==) melainkan dengan teknik epsilon.

Contoh yang salah :

<?php
$a = 0.2;     // 0.2
$b = 1 - 0.8; // 0.2

if ($a == $b)
 echo 'Sama!';
else
 echo 'Beda!';

// output : Beda!
?>

Contoh yang benar :

<?php
$a       = 0.2;     // 0.2
$b       = 1 - 0.8; // 0.2
$epsilon = 0.00001; // epsilon

if ( abs($a - $b) < $epsilon )
 echo 'Sama!';
else
 echo 'Beda!';

// output : Sama!
?>

Nilai epsilon merupakan nilai perbedaan terendah yang dapat diterima.

Dalam operasi numerik dapat menghasilkan nilai dari konstanta NAN (Not a Number). Untuk menghindari hal ini, gunakan fungsi is_nan() untuk mengecek data tersebut berupa numerik atau bukan. Contoh :

<?php
$a = acos(8);

var_dump($a);           // float(NAN)
var_dump( is_nan($a) ); // bool(true)
?>

Fungsi is_nan() akan mengembalikan true jika nilai bukan numerik, sebaliknya akan mengembalikan false.