PHP计算器无法正确处理小数输入的问题求助
PHP计算器无法正确处理小数输入的问题求助
嘿,我发现你的问题啦!问题出在你用的filter_input过滤器上~
你现在用FILTER_SANITIZE_NUMBER_FLOAT的时候,默认是会把小数点(.)过滤掉的!所以输入12.3会被处理成123,和3加起来当然就变成126了,这就是为啥结果不对。
解决起来超简单,只要给过滤器加上FILTER_FLAG_ALLOW_FRACTION这个标志,就能保留小数点了。把你PHP里的这两行代码修改一下:
$num01 = filter_input(INPUT_POST, "num01", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); $num02 = filter_input(INPUT_POST, "num02", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
另外给你个小优化建议:其实可以直接用FILTER_VALIDATE_FLOAT来做验证和类型转换,这样如果用户输入的不是有效的浮点数,变量会直接返回false,错误处理会更简洁,比如:
$num01 = filter_input(INPUT_POST, "num01", FILTER_VALIDATE_FLOAT); $num02 = filter_input(INPUT_POST, "num02", FILTER_VALIDATE_FLOAT); // 然后错误处理可以改成这样 if($num01 === false || $num02 === false || empty($operator)) { echo "请输入有效的数字并选择运算符!"; $errors = true; }
这样既完成了验证,又直接把输入转换成了浮点数类型,后续计算也不会有类型问题~
修改完之后再测试一下,输入12.3和3做加法,应该就能得到正确的15.3啦!
备注:内容来源于stack exchange,提问作者Dan Codes
相关产品推荐
相关产品推荐

