checking if a number is float in PHP

后端 未结 4 1209
挽巷
挽巷 2020-11-30 14:30

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 no         


        
相关标签:
4条回答
  • 2020-11-30 14:58

    You can check this by

    $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
    }
    
    0 讨论(0)
  • 2020-11-30 15:01

    If you change the first line to

    $rewardAmt = $amt+0;
    

    $rewardAmt should be cast to a number.

    0 讨论(0)
  • 2020-11-30 15:03

    Use filter_var() with FILTER_VALIDATE_FLOAT

    if (filter_var($amount, FILTER_VALIDATE_FLOAT))
    {
         // good
    }
    
    0 讨论(0)
  • 2020-11-30 15:03

    You can use the unary + operator, which will cast the string to the appropriate type (int or float), and then test 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
    
    0 讨论(0)
提交回复
热议问题