* 进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
* byte,short,char -- int -- long -- float -- double (-- 表示 提升为)
class Demo5 {
public static void main(String[] args) {
float f=12.3f;
long x=12345;
f=x; //隐式转换
System.out.println(f); //输出:12345
}
}
class Demo5 {
public static void main(String[] args) {
float f=12.3f;
long x=12345;
x=f;
System.out.println(x); //报错:可能损失精度
}
}
class Demo5 {
public static void main(String[] args) {
float f=12.3f;
long x=12345;
x=(long)f; //强式转换
System.out.println(f); //输出:12,小数点后面去掉
}
}
* long: 8个字节
* float:4个字节
* IEEE754
* 4个字节是32个二进制位
* 1位是符号位
* 8位是指数位
* 00000000 11111111
* 0到255
* 1到254(每个指数位减去127)
* -126到127
* 23位是尾数位
* 每个指数位减去127
* A:它们底层的存储结构不同。
* B:float表示的数据范围比long的范围要大
* long:2^63-1
* float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1