我有这个
$number = 0.5
if (is_float($number))
{
echo 'float';
}
else
{
echo 'not float';
}
并且它不会浮动。 可能是什么原因 感谢
答案 0 :(得分:39)
可能$number
实际上是一个字符串:"0.5"
。
请改为is_numeric
。 is_*
系列检查变量的实际类型。如果你只知道变量是一个数字,无论它实际上是int
,float
还是string
,都要使用is_numeric
。
如果你需要它有一个非零小数部分,你可以这样做:
//if we already know $number is numeric...
if ((int) $number == $number) {
//is an integer
}
答案 1 :(得分:1)
如果您只是检查.(dot)
,那么您不需要typecast
,而是将其作为包含[strpos][1]()
的字符串进行操作。
if (strpos($number,'.') !== false) {
echo 'true';
}else {
echo 'false';
}
答案 2 :(得分:1)
is_numeric()函数检查变量是数字还是数字字符串。如果变量是数字或数字字符串,则此函数返回true,否则返回false / nothing。
$number = 0.5;
echo is_numeric($number); //true
OR
$number = "0.5";
echo is_numeric($number); //true
了解更多信息:
答案 3 :(得分:0)
如果我理解正确,使用类型转换将允许您检查int并正确浮动,无论机器的语言环境如何。但是,我可能非常错误......我不确定PHP是否支持十进制语言环境,例如某些国家/地区的逗号(,)。