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

求int类变量的平均值问题

int sum=56;

double avg;

avg=sum/4;对么?还是应该写成avg=(double)sum/4;先把sum强制类型装换?


提问者:Kyne 2015-11-20 13:35

个回答

  • 级数
    2015-11-20 14:07:58
    已采纳

    这是可以的,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型,一般的系统都会根据语句灵活判断,一般不用考虑他的精度问题。

  • 天启之魂
    2015-11-20 14:49:05

    补充楼上的 默认小数就是double 所以4.0系统直接会认为是double 而不是float

    所以楼主直接avg=sum/4.0即可 avg=(double)sum/4也行