考虑到这个代码片段:
int i = 0;
double d1 = (double) i;
long l = 0L;
double d2 = (double) l;
在我的机器上运行这0.0
两种转换。但是可以d1
而且d2
永远不是0.0
吗?
据我了解,这是规范中所说的扩大的原始转换:
加宽基元转换不会丢失有关数值整体大小的信息。
也
将 int 或 long 值转换为 float,或将 long 值转换为 double,可能会导致精度损失
据我了解规范,以上将意味着int 0
它将始终成为double 0.0
但long 0
可以转换为其他东西(例如1E-20
或类似的东西)。我的规格解释正确吗?