似水若禅
2016-03-26 20:59
问?double avg=sum/4;与double avg=sum/4.0;前者结果是26.0后者结果为26.25,这是为什么????
是这样的,首先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
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,答案没有取整数。
Java入门第一季(IDEA工具)升级版
1165172 学习 · 17581 问题
相似问题