这真的很奇怪。我有这段代码。
$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条件,这不应该发生。有没有其他方法可以做到这一点?感谢
答案 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)
您可以使用一元+
运算符,它将字符串强制转换为相应的类型(int
或float
),然后使用{{1}测试结果数据类型}:
is_float