Coercing the value to float and back to string was a neat trick. You can also just add a literal 0 to whatever you're checking.
<?php
function isfloat($value) {
// PHP automagically tries to coerce $value to a number
return is_float($value + 0);
}
?>
Seems to work ok:
<?php
isfloat("5.0" + 0); // true
isfloat("5.0"); // false
isfloat(5 + 0); // false
isfloat(5.0 + 0); // false
isfloat('a' + 0); // false
?>
YMMV