qq_行在天涯_04096833
2016-10-09 11:42
double avg=sum/4d 或者float avg=sum/4f 后面加了字母d或f的,运算出来是26.25 而double avg=sum/4 或者float avg=sum/4 这样就只是26.0 这是为什么额,后面加字母是控制输出精度的嘛?
sum是整型,在计算 double avg =sum/4 时 sum为int或long,除以4被转型为int/long类型,然后被赋值给精度更高的double类型,然而整型是没有浮点部分的,因此小数部分在后面计算时就已经被丢弃了,只保留了整数部分并赋值给double
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;
因为4本身是int型,如果不加d或f,就会当做整数相除处理,再赋值给double或float类型的变量。
Java入门第一季(IDEA工具)升级版
1165565 学习 · 17587 问题
相似问题