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

来源:4-15 编程练习

三水朝山

2016-04-10 11:08

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回答

  • qq_末夏_03159133
    2016-04-10 18:40:49
    已采纳

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

    三水朝山

    非常感谢!

    2016-04-19 15:13:17

    共 1 条回复 >

  • qq_末夏_03159133
    2016-04-10 18:45:37

    比如 

    int a=9;

    double b=9.7;

    a*=b;

    System.out.println(a);

    正常的话答案是87.3

    但是输出的是 87 


  • qq_末夏_03159133
    2016-04-10 11:18:00

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

    三水朝山

    就是int

    2016-04-10 14:22:56

    共 1 条回复 >

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165174 学习 · 17581 问题

查看课程

相似问题