проверка, является ли число float в PHP

Это действительно странно. У меня есть эта часть кода.

$rewardAmt = $amt; if(is_float($rewardAmt)){ print_r("is float");die; } else { print_r("is not float"); die; } 

значение $ amt равно 0,01. Но он переходит в другое условие. Поэтому я сделал var_dump $ amt. он говорит строку (4) Так что я решил придумать $ amt

  $rewardAmt = (float)$amt; 

Но проблема с этим даже в том случае, если значение $ amt равно 1, оно все равно получает typecast для float и переходит в условие if, чего не должно быть. Есть ли другой способ сделать это? благодаря

Solutions Collecting From Web of "проверка, является ли число float в PHP"

Если вы измените первую строку на

 $rewardAmt = $amt+0; 

$ rewardAmt следует отнести к числу.

Используйте filter_var() с FILTER_VALIDATE_FLOAT

 if (filter_var($amount, FILTER_VALIDATE_FLOAT)) { // good } 

Вы можете проверить это на

 $float = floatval($num); //Convert the string to a float if($float && intval($float) != $float) // Check if the converted int is same as the float value... { // $num is a float }else{ // $num is an integer } 

Вы можете использовать оператор unary + , который передаст строку соответствующему типу ( int или float ), а затем проверит полученный тип данных с помощью 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