Floating point precision in PHP
It is typical that simple decimal fractions like 0.1 or 0.7 cannot be converted into their internal binary counterparts without a small loss of precision. This can lead to confusing results: for example, floor((0.1+0.7)*10) will usually return 7 instead of the expected 8, since the internal representation will be something like 7.9.
$a = 0.1; $b = 0.7; print $a + $b; print (( $a + $b ) * 10);
So, never compare two floating numbers in your program.