以下声明导致我在编译时出现错误:“错误:(19,13)java:不兼容的类型:可能会丢失从double到int的转换”。
int i1 = 10.0;
// Error:(19, 14) java: incompatible types: possible lossy conversion from double to int
问题1
我理解这个错误,但编译器不能在这种特定情况下推断出不会有精度损失吗?
问题2
如果我将double显式转换为int,那么它可以编译通过(甚至没有警告),尽管在这个例子中我肯定会失去精度。
int i2 = (int)9999999999999.999999999;
如果我无法编译第一个情况 - 在这种情况下不会发生任何损失 - 那么为什么这个具有明确转换的第二个示例甚至没有生成编译器警告?