问答详情
源自:3-2 Java中的算术运算符

求解答哦!谢谢!

问?double avg=sum/4;与double avg=sum/4.0;前者结果是26.0后者结果为26.25,这是为什么????

提问者:似水若禅 2016-03-26 20:59

个回答

  • 凌冰水水
    2016-03-26 21:10:56

    是这样的,首先avg被你声明为double类型,但是运算里面,除数sum=105是整型,被除数4也是整型。除数和被除数都是整型的计算结果也会是整型。然后计算机会先计算105/4的结果(结果为整型数),整型会把小数部分直接切掉,就是把26.25切成26,然后再按照你要求的double输出,就加上小数位,26的小数位是26.0,所以这时候输出的就是26.0

    第二个avg=sum/4.0,因为除数或者被除数中有一个是浮点类型的话,计算器会自动把结果变成浮点类型,sum/4.0的结果就是26.25,然后再按照你声明的double类型输出,就还是26.25



  • HQ今日磨墨
    2016-03-26 21:10:36

    double avg = sum / 4;

    因为4是基本类型int,所以105/4的结果只能是整数26,但是因为avg是double类型,所以自动转为26.0(这个转换必然是表达式sum/4为先,int ---> double为后)

    double avg = sum / 4.0;

    这时,即使sum为int类型,sum/4.0的结果一定和4.0一样是double类型,所以结果为26.25,答案没有取整数。