每当我想到我对铸造和转换的理解时,我发现了另一种奇怪的行为.
long l = 123456789L;
float f = l;
System.out.println(f); // outputs 1.23456792E8
Run Code Online (Sandbox Code Playgroud)
鉴于a的long位深度比a大float,我希望为了编译它需要一个显式的强制转换.毫不奇怪,我们发现结果已经失去了精确度.
为什么这里不需要演员?
我正在尝试获取浮点数的尾数(只是为了学习),但它没有按预期工作.

说5.3的尾数是53,对吗?我试过这段代码:
System.out.println(Float.floatToIntBits(5.3f) & 0x7FFFFF);
Run Code Online (Sandbox Code Playgroud)
它印了2726298.它不应该删除指数位并留下53?我尝试了很多东西,但总会发生这种情况.我在这做错了什么?