PHP中判断奇偶数遇到的问题

我写了一个PHP的判断输入数字奇偶数的程序,当他超过10位数时,无论奇偶数都会判断成奇数。是怎么回事?<tableborder="0"align="center"cell... 我写了一个PHP的判断输入数字奇偶数的程序,当他超过10位数时,无论奇偶数都会判断成奇数。是怎么回事?

<table border="0" align="center" cellpadding="0" cellspacing="0">
<form method="post" aciton="#">
<tr>
<td>请输入任意数字</td>
<td><input type="text" name="text" ></td>
<td><input type="submit" value="检测" ></td>
</tr>
<tr>
<td colspan="3" height="25" align="center" valign="middle">
<?php
#自主练习
if($_POST['text'] != ''){
$number = $_POST['text'];
if(is_numeric($number) and $number%2==0)
echo $number."是偶数";
elseif (is_numeric($number))
echo $number."是奇数";
else echo"输入的不是纯数字";
}
?>
</td>
</tr>
</form>
</table>
如果单独把中间这段代码提出来就不存在这种问题,是哪里写错了呢?
<?php
$number =44444444444444444444444444444444444444444444444;
if(is_numeric($number) and $number%2==0)
echo $number."是偶数";
elseif (is_numeric($number))
echo $number."是奇数";
?>
展开
 我来答
菜鸡小神马8
2016-09-16 · TA获得超过188个赞
知道小有建树答主
回答量:326
采纳率:50%
帮助的人:174万
展开全部
因为PHP没有形成的判断奇偶函数,所以以前一直使用 %2 来判断一个数字变量是奇数还是偶数,如果把该变量 mod2 得到结果是1那么就是奇数,得到结果是 0 那么就是偶数。最近看了PHP手册,发现除了使用算术运算符判断,还可以使用位运算符来判断。
<?php
//判断奇数,是返回TRUE,否返回FALSE
function is_odd($num){
return (is_numeric($num)&($num&1));
}
//判断偶数,是返回TRUE,否返回FALSE
function is_even($num){
return (is_numeric($num)&(!($num&1)));
}
?>
当然,如果已经知道变量值是数字而非字符或字符串,则可以省略 is_numeric 函数的判断,直接使用 $num&1 来判断就行了。
追问
多谢!学到了新方法!那么能解释一下为什么用%2超过10位数会出现错误吗?而且单独提取出来这一段却没事。想弄清楚了一点
金小牛笑傲江湖
2016-09-16 · TA获得超过303个赞
知道小有建树答主
回答量:340
采纳率:71%
帮助的人:161万
展开全部
你试试吧php代码拿到form外面呢
更多追问追答
追问
无效,依旧判断成奇数
追答
超过10位数,虽然有那么大的数字,但是电脑没法表示出来,所以会变成其他的东西,具体会变成什么忘了,你可以在excel里面打一个大于10位的,然后把表格缩短就能看到了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式