为了账号安全,请及时绑定邮箱和手机立即绑定

请问我对答案解释逻辑哪里错误?解释在编程旁边,谢

if (num >= 0  && num<=999999999){
while(num != 0){     //假设num=9.9,那么判断num不等于0,条件成立,进入循环
count++;       //count自加一
num/=10;       //num=9.9除以10等于0.99再赋值给num,此时的num=0,99再进入while时判断条件不是继续成立?为什么就输出是一位数?没进入下次循环?
}
System.out.println("它是个"+ count+"位的数!");
} else{
System.out.println("输入有误!");
}

正在回答

3 回答

可以肯定了 你要明确类型 int 类型 是double类型的话 底层会发生自动提升的 也就是 就算是小数 也会被转换成int 类型,因此小数会被删除自留下整数 也就是自有一位数的原因,把你那int 类型改成double

0 回复 有任何疑惑可以回复我~
#1

三水朝山 提问者

非常感谢!
2016-04-19 回复 有任何疑惑可以回复我~

比如 

int a=9;

double b=9.7;

a*=b;

System.out.println(a);

正常的话答案是87.3

但是输出的是 87 


0 回复 有任何疑惑可以回复我~

对了 你先告诉我你 num是什么类型的 如果是int 类型的话  9。9的话会被默认去掉小数的 

0 回复 有任何疑惑可以回复我~
#1

三水朝山 提问者

就是int
2016-04-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问我对答案解释逻辑哪里错误?解释在编程旁边,谢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信