Kyne
2015-11-20 13:35
int sum=56;
double avg;
avg=sum/4;对么?还是应该写成avg=(double)sum/4;先把sum强制类型装换?
这是可以的,avg=sum/4;因为sum和4都是Int型,结合方向自右向左,所以先运行sum/4,得int型值14。再赋值给avg系统自动转换为double型,为14.000000。但如果sum的值不能被4整除的话,例如int sum=53,sum/4得到的int型值为13,avg值为13.000000,就错误了。要改变这种情况,可以用强制类型转换,如avg=(double)sum/4;也可以改变被除数的数据类型,如改为avg=sum/4.0,因为被除数为4.0为(double)float型,所以sum/4.0的值也变成(double)float 型,和avg的数据类型相一致,就不会出错。至于4.0系统判断为double还是float型,一般的系统都会根据语句灵活判断,一般不用考虑他的精度问题。
补充楼上的 默认小数就是double 所以4.0系统直接会认为是double 而不是float
所以楼主直接avg=sum/4.0即可 avg=(double)sum/4也行
Java入门第一季(IDEA工具)升级版
1165172 学习 · 17581 问题
相似问题