如何确定一个变量是否是一个小数,并且在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