Checking if number is float in PHP
This is really weird. I have this piece of code.
$rewardAmt = $amt;
if(is_float($rewardAmt)){
print_r("is float");die;
} else {
print_r("is not float"); die;
}
the $ amt value is 0.01. But it goes over to another condition. So I did var_dump $ amt. it says line (4) So I decided to come up with $ amt
$rewardAmt = (float)$amt;
But the problem with that is even if the value of $ amt is 1, it still gets the typecast for the float and goes into the if condition, which it shouldn't. Is there any other way to do this? Thanks to
source to share
Use filter_var()
withFILTER_VALIDATE_FLOAT
if (filter_var($amount, FILTER_VALIDATE_FLOAT))
{
// good
}
source to share
You can use the unary operator +
, which will pass a string to the appropriate type ( int
or float
), and then check the resulting data type with is_float
:
$s = "3.00";
$n = +$s;
var_dump( $n ); // float(3)
var_dump( is_float($n) ); // true
$s = "3";
$n = +$s;
var_dump( $n ); // int(3)
var_dump( is_float($n) ); // false
source to share