正如甲骨文所说
来自 Oracle Docs的 参考
扩展基元转换19个特定于基元类型的转换称为扩展基元转换:
如果浮点数具有32位,而long则具有64位,那么如何考虑加宽?难道这不应该被视为缩小?
可以由a表示的值的范围float或double比可以由a表示的范围大得多long。虽然从转换时,人们可能会失去显著数字long的float,它仍然是一个“拉”操作,因为范围更广。
float
double
long
根据Java语言规范§5.1.2:
将int或long值转换为float或将long值转换为double的加宽转换可能会导致精度降低- 也就是说,结果可能会丢失该值的某些最低有效位。在这种情况下,使用IEEE 754舍入到最近模式(第4.2.4节),所得的浮点值将是整数值的正确舍入版本。
请注意,a double可以准确代表每个可能的int值。
int