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

double avg=sum/4d 或者float avg=sum/4f 后面加了字母d或f的,运算出来是26.25 而double avg=sum/4 或者float avg=sum/4 这样就只是26.0 这是为什么额,后面加字母是控制输出精度的嘛?

double avg=sum/4d    或者float avg=sum/4f   后面加了字母d或f的,运算出来是26.25 而double avg=sum/4   或者float avg=sum/4    这样就只是26.0    这是为什么额,后面加字母是控制输出精度的嘛?

提问者:qq_行在天涯_04096833 2016-10-09 11:42

个回答

  • qq_初夏微光_0
    2016-10-09 12:11:32
    已采纳

    sum是整型,在计算 double avg =sum/4 时 sum为int或long,除以4被转型为int/long类型,然后被赋值给精度更高的double类型,然而整型是没有浮点部分的,因此小数部分在后面计算时就已经被丢弃了,只保留了整数部分并赋值给double

  • 慕粉123123123
    2016-10-09 15:57:08

    double avg=sum/4d    或者float avg=sum/4f   后面加了字母d或f的,运算出来是26.25

          是因为sum是int/long型 ,4d/4f是浮点型,运算后的类型是浮点型

    而double avg=sum/4   或者float avg=sum/4    这样就只是26.0   

        是因为sum是int/long型,4是int型,运算后还是int型,然后被赋值给浮点型

    这里面牵涉到一个不同类型运算的时候向大容量类型转换byte、short、char<int<long<float<double;

  • 自得
    2016-10-09 12:07:03

    因为4本身是int型,如果不加d或f,就会当做整数相除处理,再赋值给double或float类型的变量。