有时会听到这样的声音:位数多的向位数小的转换要强制类型转换,那下面的是特例吗?
64位的long转换成32位的float不需要强制类型转换。
Why?本人认为因为float能表示的取值范围比long大得多,long的范围是
-9223372036854775808~~9223372036854775807,
而float的取值范围是-3.4E+38~~3.4E+38;
但是这样的转换后会造成掉失精度,因为float只能保证的有效数字是7位,
如下面的例子。
public class Convert {
public static void main(String[] args) {
float f;
long l = 9999999999999L;
f = l;
System.out.println(f);
}
}
结果:9.9999998E12