求int类变量的平均值问题

来源:3-2 Java中的算术运算符

Kyne

2015-11-20 13:35

int sum=56;

double avg;

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


写回答 关注

2回答

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

    Kyne

    非常感谢!

    2016-02-09 22:11:26

    共 1 条回复 >

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

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

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



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

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

1165550 学习 · 17586 问题

查看课程

相似问题