2010-01-26 85 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了解更多不同操作数产生的例子。

相关问题