0
当我执行下面的代码时,我期望它得到警告“不能从long转换为float”,因为float是32位,long是64位大小。 但看起来没有警告, 任何人都可以解释我怎么样?为什么编译器在给float赋值时不会给出错误?
public static void main(String[] args)
{
float a=1;
long b=123;
a=b;
System.out.println(a);
}
如果float不能保持赋值,那么它会溢出/下溢 –
@MohammadAdil:它可能无法保存* exact *值(在这种情况下它会舍入),但它不会溢/下溢。 –
通过定义扩展意味着将类型转换为更宽范围的类型(尽管可能精度更低)当扩展时,不可能出现下溢或溢出。 –