Java 为什么编译器不';将long赋值为float时是否不给出错误?
当我执行下面的代码时,我希望它得到警告“不能从long转换为float”,因为float是32位,long是64位。 但看起来没有任何警告, 谁能告诉我怎么做Java 为什么编译器不';将long赋值为float时是否不给出错误?,java,Java,当我执行下面的代码时,我希望它得到警告“不能从long转换为float”,因为float是32位,long是64位。 但看起来没有任何警告, 谁能告诉我怎么做 public static void main(String[] args) { float a=1; long b=123; a=b; System.out.println(a); } float的范围比long的范围大得多。。。有一个隐式转换可能会丢失精度,但不会丢失大小。对于long到double
public static void main(String[] args)
{
float a=1;
long b=123;
a=b;
System.out.println(a);
}
float
的范围比long
的范围大得多。。。有一个隐式转换可能会丢失精度,但不会丢失大小。对于long
到double
也是如此
发件人:
从int
到float
,或从long
到float
,或从long
到double
的扩大原语转换可能会导致精度损失-也就是说,结果可能会丢失一些值的最低有效位。在这种情况下,产生的浮点值将是整数值的正确舍入版本,使用IEEE 754舍入到最近模式(§4.2.4)
float
的范围比long
的范围大得多。。。有一个隐式转换可能会丢失精度,但不会丢失大小。对于long
到double
也是如此
发件人:
从int
到float
,或从long
到float
,或从long
到double
的扩大原语转换可能会导致精度损失-也就是说,结果可能会丢失一些值的最低有效位。在这种情况下,产生的浮点值将是整数值的正确舍入版本,使用IEEE 754舍入到最近模式(§4.2.4)
如果float不能保存指定的值,那么它将溢出/underflow@MohammadAdil:它可能无法保持准确的值(在这种情况下,它将取整),但不会溢出/下溢。通过定义加宽意味着在加宽时铸造到范围更广(尽管精度可能更低)的类型,不可能下溢或上溢。如果float不能保持指定的值,则它将上溢/underflow@MohammadAdil:它可能无法保持精确的值(在这种情况下,它将取整),但不会溢出/下溢。通过定义加宽意味着铸造到更宽范围的类型(尽管可能精度较低)加宽时,不可能下溢或溢出。