检查一个数字是否在PHP中浮动

时间:2013-02-14 02:08:53

标签: php validation floating-point

这真的很奇怪。我有这段代码。

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

$ amt的值是0.01。但它正在进入其他条件。所以我做了一个$ amt的var_dump。字符串(4) 所以我决定强加$ amt

   $rewardAmt = (float)$amt;

但问题是即使$ amt的值为1,它仍然会被转换为浮点数并进入if条件,这不应该发生。有没有其他方法可以做到这一点?感谢

4 个答案:

答案 0 :(得分:10)

filter_var()FILTER_VALIDATE_FLOAT

一起使用
if (filter_var($amount, FILTER_VALIDATE_FLOAT))
{
     // good
}

答案 1 :(得分:4)

如果您将第一行更改为

$rewardAmt = $amt+0;

$ rewardAmt应该转换为数字。

答案 2 :(得分:0)

您可以通过

进行检查
$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
}

答案 3 :(得分:0)

您可以使用一元+运算符,它将字符串强制转换为相应的类型(intfloat),然后使用{{1}测试结果数据类型}:

is_float