6

これは本当に奇妙です。私はこのコードを持っています。

$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であっても、型キャストされてfloatになり、if条件に入るということです。これは発生しないはずです。これを行う他の方法はありますか?ありがとう

4

5 に答える 5

13

filter_var()で使用FILTER_VALIDATE_FLOAT

if (filter_var($amount, FILTER_VALIDATE_FLOAT))
{
     // good
}
于 2013-02-14T02:11:14.767 に答える
5

最初の行をに変更した場合

$rewardAmt = $amt+0;

$rewardAmtは数値にキャストする必要があります。

于 2013-02-14T02:17:43.410 に答える