2010-01-26 89 views
1

如何確定一個變量是否是一個小數,並且在PHP中小於0.01? 如果我寫如何確定一個變量是否爲小數,在PHP中小於0.01?

if($balance<0.01) 

將一個

真正

值返回如果

$平衡

是不是一個小數?

+0

請清除您對* decimal *的使用。你想檢查$餘額是否是任何數字,例如-1,0,1.1,13e7等?或者你想檢查一個特定的*類型的數字,例如浮游物,整數。 – Gordon 2010-01-26 12:09:49

+0

'$ balance'應該是貨幣價值嗎?你幾乎肯定不希望爲此使用浮游物。看看bcmath擴展:http://php.net/manual/en/book.bc.php – 2010-01-26 12:13:41

回答

2

$balance值將被類型強制轉換到需要的任何的比較。在你的情況下,任何整數都可以,例如$ 1,1.1'1'的美元餘額將全部評估爲false,不管它們的初始類型如何。因此0 < 0.1將評估爲true,因爲它不會檢查類型。

請參閱PHP manual on Comparison Operators,type jugglingtype 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))

0

使用is_real()函數:

if(is_real($balance) && $balance<0.01) 
{ 
    ... 
} 
0

嘗試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"; 
} 

http://www.php.net/manual/en/function.is-float.php

+0

但如果它是一個int值:0,不應該匹配嗎? – Ben 2010-01-26 11:12:55

+0

我錯過了那個,也許我們可以把另一個標準,如果$ balance <> 0 – 2010-01-26 11:34:49

0

要回答你的問題,這是一個簡單的是/否:這取決於。

如果它是任何類型的數字,如float,double或integer,那麼PHP將按預期執行。即使這是一個php可以解釋爲一個數字的字符串,那也是可行的。如果它是任何其他字符串,如$ balance =「whatever」,那麼這將返回true,所以如果您期望這樣做,您可以按照其他答案所建議的方式進行類型檢查。

查看the manual瞭解更多不同操作數產生的例子。

相關問題