簡體   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