use*_*510 -1 php forms floating-point floating-point-precision
我正在is_float()检查输入的数字是否是浮点数,但echo()输入时它会不断抛出该消息3.00。还有其他解决方案吗?还是我做错了什么?
这是我的代码:
PHP:
if(!is_float($_POST["gpa"])){
echo "GPA must be in #.## format.";
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<input type="text" name="gpa" />
Run Code Online (Sandbox Code Playgroud)
表单输入始终是字符串,因此if条件将始终返回您指定的错误消息。利用filter_var()代替。
if(filter_var($_POST['gpa'], FILTER_VALIDATE_FLOAT) === false) {
echo "GPA must be in #.## format.";
}
Run Code Online (Sandbox Code Playgroud)
如果您想验证的格式,你需要使用注册 ular 防爆 pressions。
([0-9]{1,})\.([0-9]{2,2})
Run Code Online (Sandbox Code Playgroud)
您可以单独使用RegEx并省去了filter_var(),因为它也可以这样做。
if(preg_match('/([0-9]{1,})\.([0-9]{2,2})/', $_POST['gpa']) == 0) {
echo "GPA must be in #.## format.";
}
Run Code Online (Sandbox Code Playgroud)