繁体   English   中英

检查数字是否在 PHP 中浮动

[英]checking if a number is float in PHP

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

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

$amt 的值为 0.01。 但它正在进入其他条件。 所以我做了一个 $amt 的 var_dump。 它说 string(4) 所以我决定输入 $amt

   $rewardAmt = (float)$amt;

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

使用filter_var()FILTER_VALIDATE_FLOAT

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

如果您将第一行更改为

$rewardAmt = $amt+0;

$rewardAmt 应该被转换为一个数字。

您可以使用一元+运算符,它将字符串转换为适当的类型( intfloat ),然后使用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

您可以通过以下方式检查

$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
}

正如is_float 函数文档中所建议

注意:要测试变量是数字还是数字字符串(例如表单输入,它始终是字符串),您必须使用is_numeric()

答案是使用is_numeric()而不是 is_float()。 如果测试的数字是“0”或 0,这也有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM