Molto probabile che io non veda qualcosa ma...
Questa funzione dovrebbe stampare uguale: 5 quando il ciclo arriva a 5 no?
A me non lo stampa :|
<?
for($i=1.0; $i <= 10.0; $i += 0.1) {
if($i == 5.0)
print "uguale: ".$i;
}
?>

se invece la scrivo cosi si

<?
for($i=1.0; $i <= 10.0; $i += 0.1) {
if($i."" == 5.0) //notare la conversione a stringa
print "uguale: ".$i;
}
?>

e anche cosi senza convertirla a stringa ma cambiando l'incremento

<?
for($i=1.0; $i <= 10.0; $i += 0.5) {
if($i == 5.0)
print "uguale: ".$i;
}
?>

e anche cosi

<?
for($i=1.0; $i <= 10.0; $i += 0.25) {
if($i == 5.0)
print "uguale: ".$i;
}
?>

Se la matematica non è un opinione non dovrebbe essere giusta anche la prima?
Dove e cosa sbaglio?

fuori da un for ovviamente funziona tutto
$i = 5.0;
if($i == 5.0)
print "uguale: ".$i;