Php _float是否未检测到浮点数
我正在使用Php _float是否未检测到浮点数,php,forms,floating-point,floating-point-precision,Php,Forms,Floating Point,Floating Point Precision,我正在使用is_float()检查输入的数字是否为float,但当我输入3.00时,它会不断抛出echo()消息。还有其他解决办法吗?还是我做错了什么 这是我的密码: PHP: if(!is_float($_POST["gpa"])){ echo "GPA must be in #.## format."; } <input type="text" name="gpa" /> HTML: if(!is_float($_POST["gpa"])){ echo "GP
is_float()
检查输入的数字是否为float,但当我输入3.00
时,它会不断抛出echo()
消息。还有其他解决办法吗?还是我做错了什么
这是我的密码:
PHP:
if(!is_float($_POST["gpa"])){
echo "GPA must be in #.## format.";
}
<input type="text" name="gpa" />
HTML:
if(!is_float($_POST["gpa"])){
echo "GPA must be in #.## format.";
}
<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';
}
从
查找给定变量的类型是否为float
要测试变量是数字还是数字字符串(例如表单输入,它始终是字符串),必须使用is_numeric()
根据定义,您的
$\u POST[“gpa”]
是一个字符串,而不是浮点。当您执行var\u dump($\u POST[“gpa”])时可以看到这一点。验证字符串中浮点值的正确方法是:
if( !filter_var($_POST["gpa"], FILTER_VALIDATE_FLOAT) ) echo 'error!';
表单输入始终是字符串,因此if条件将始终返回您指定的错误消息。改用
filter\u var()
if(filter_var($_POST['gpa'], FILTER_VALIDATE_FLOAT) === false) {
echo "GPA must be in #.## format.";
}
如果要验证格式,需要使用RegulaEx按
([0-9]{1,})\.([0-9]{2,2})
您可以单独使用RegEx,而不必考虑filter\u var()
,因为它也是这样做的
if(preg_match('/([0-9]{1,})\.([0-9]{2,2})/', $_POST['gpa']) == 0) {
echo "GPA must be in #.## format.";
}
可能重复的作品对我来说很好!请向我们显示您的输入、当前输出和预期输出3.00 is my input@Rizier123输入始终是字符串或数组(如果指定),因此
is_float
将始终返回false,因此if条件为true。将filter\u var()
与filter\u VALIDATE\u FLOAT
一起使用。是否确实没有多余的字符,例如空格?请尝试trim()
-在使用该值之前将其命名我是否必须使用reggae将条目限制为#.###格式?我是否必须使用reggae将条目限制为#.###格式?是的,如果确实需要,这是唯一的方法。或者你可以round($n,2)
it来中继所有额外的数字。我必须使用雷鬼音乐将输入限制为#。#####格式?floatval出于某种原因对我不起作用,但它确实起作用:if($num==(float)$num)(echo'is float')
-它不会过滤int
thou(但如果使用相同的技巧和(int)$num
)