如何確定一個變量是否是一個小數,並且在PHP中小於0.01? 如果我寫如何確定一個變量是否爲小數,在PHP中小於0.01?
if($balance<0.01)
將一個
真正
值返回如果
$平衡
是不是一個小數?
如何確定一個變量是否是一個小數,並且在PHP中小於0.01? 如果我寫如何確定一個變量是否爲小數,在PHP中小於0.01?
if($balance<0.01)
將一個
真正
值返回如果
$平衡
是不是一個小數?
使用 如果(is_numeric($餘額)& & $平衡< 0.01)
的$balance
值將被類型強制轉換到需要的任何的比較。在你的情況下,任何整數都可以,例如$ 1
,1.1
或'1'
的美元餘額將全部評估爲false
,不管它們的初始類型如何。因此0 < 0.1
將評估爲true
,因爲它不會檢查類型。
請參閱PHP manual on Comparison Operators,type juggling和type comparison table。此外,請參閱這些功能用於檢查類型
is_int()
找到變量的類型是否是整數is_float()
找到變量的類型是否是浮動/十進制示例:
var_dump(is_int(1)); // true
var_dump(is_int(1.0)); // false
var_dump(is_int(1.1)); // false
var_dump(is_int('1')); // false
var_dump(is_float(1)); // false
var_dump(is_float(1.0)); // true
var_dump(is_float(1.1)); // true
var_dump(is_float('1')); // false
出於好奇,是不是更容易檢查if(!($balance > 0))
?
使用is_real()函數:
if(is_real($balance) && $balance<0.01)
{
...
}
嘗試is_float()
<?php
$balance=2.75;
if(is_float($val) && $balance<0.01) {
echo "is decimaland less than 0.01 \n";
}else {
echo "is not decimal and greater than 0.01 \n";
}
但如果它是一個int值:0,不應該匹配嗎? – Ben 2010-01-26 11:12:55
我錯過了那個,也許我們可以把另一個標準,如果$ balance <> 0 – 2010-01-26 11:34:49
要回答你的問題,這是一個簡單的是/否:這取決於。
如果它是任何類型的數字,如float,double或integer,那麼PHP將按預期執行。即使這是一個php可以解釋爲一個數字的字符串,那也是可行的。如果它是任何其他字符串,如$ balance =「whatever」,那麼這將返回true,所以如果您期望這樣做,您可以按照其他答案所建議的方式進行類型檢查。
查看the manual瞭解更多不同操作數產生的例子。
請清除您對* decimal *的使用。你想檢查$餘額是否是任何數字,例如-1,0,1.1,13e7等?或者你想檢查一個特定的*類型的數字,例如浮游物,整數。 – Gordon 2010-01-26 12:09:49
'$ balance'應該是貨幣價值嗎?你幾乎肯定不希望爲此使用浮游物。看看bcmath擴展:http://php.net/manual/en/book.bc.php – 2010-01-26 12:13:41