is_float 未检测浮点数
is_float not detecting float numbers
我正在使用 is_float()
检查输入的数字是否为浮点数,但当我输入 3.00
时它一直抛出 echo()
消息。还有其他解决方案吗?还是我做错了什么?
这是我的代码:
PHP:
if(!is_float($_POST["gpa"])){
echo "GPA must be in #.## format.";
}
HTML:
<input type="text" name="gpa" />
试试这个:
$num = 2.6;
if($num === floatval($num)){
echo 'is float';
}else{
echo 'is not';
}
另一种方式是正则表达式:
$num = '345.56678';//post is string
$patt = '/^\d+\.{1}\d+$/';
$resp = preg_match($patt,$num);
if($resp){
echo 'is float';
}else{
echo 'is not';
}
Finds whether the type of the given variable is float.
To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric().
根据定义,您的 $_POST["gpa"]
是一个字符串,而不是一个浮点数。当你做 var_dump($_POST["gpa"])
时你可以看到这个
验证字符串中浮点值的正确方法是:
if( !filter_var($_POST["gpa"], FILTER_VALIDATE_FLOAT) ) echo 'error!';
表单输入始终是字符串,因此 if 条件将始终 return 您指定的错误消息。请改用 filter_var()
。
if(filter_var($_POST['gpa'], FILTER_VALIDATE_FLOAT) === false) {
echo "GPA must be in #.## format.";
}
如果要验证格式,您需要使用 Regular Expressions.
([0-9]{1,})\.([0-9]{2,2})
您可以单独使用 RegEx 而忘记 filter_var()
,因为它的作用相同。
if(preg_match('/([0-9]{1,})\.([0-9]{2,2})/', $_POST['gpa']) == 0) {
echo "GPA must be in #.## format.";
}
我正在使用 is_float()
检查输入的数字是否为浮点数,但当我输入 3.00
时它一直抛出 echo()
消息。还有其他解决方案吗?还是我做错了什么?
这是我的代码:
PHP:
if(!is_float($_POST["gpa"])){
echo "GPA must be in #.## format.";
}
HTML:
<input type="text" name="gpa" />
试试这个:
$num = 2.6;
if($num === floatval($num)){
echo 'is float';
}else{
echo 'is not';
}
另一种方式是正则表达式:
$num = '345.56678';//post is string
$patt = '/^\d+\.{1}\d+$/';
$resp = preg_match($patt,$num);
if($resp){
echo 'is float';
}else{
echo 'is not';
}
Finds whether the type of the given variable is float.
To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric().
根据定义,您的 $_POST["gpa"]
是一个字符串,而不是一个浮点数。当你做 var_dump($_POST["gpa"])
验证字符串中浮点值的正确方法是:
if( !filter_var($_POST["gpa"], FILTER_VALIDATE_FLOAT) ) echo 'error!';
表单输入始终是字符串,因此 if 条件将始终 return 您指定的错误消息。请改用 filter_var()
。
if(filter_var($_POST['gpa'], FILTER_VALIDATE_FLOAT) === false) {
echo "GPA must be in #.## format.";
}
如果要验证格式,您需要使用 Regular Expressions.
([0-9]{1,})\.([0-9]{2,2})
您可以单独使用 RegEx 而忘记 filter_var()
,因为它的作用相同。
if(preg_match('/([0-9]{1,})\.([0-9]{2,2})/', $_POST['gpa']) == 0) {
echo "GPA must be in #.## format.";
}