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 mengembalikantrue
jika nilai bukan numerik, sebaliknya akan mengembalikanfalse
.