[英]Why does printing a static variable value gives error in static block while assigning it doesn't
[英]why does the compiler doesn't give error while assigning long to float?
當我執行以下代碼時,我希望它得到警告“無法從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
也是如此。
從JLS 5.1.2開始 :
從
int
到float
或從long
到float
或從long
到double
原始轉換范圍擴大,可能會導致精度損失 -也就是說,結果可能會丟失該值的某些最低有效位。 在這種情況下,使用IEEE 754舍入到最近模式(第4.2.4節),結果浮點值將是整數值的正確舍入版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.