簡體   English   中英

為什么在分配long浮點數時編譯器沒有給出錯誤?

[英]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的范圍。存在一個隱式轉換,該轉換可能會失去精度,但不會降低幅度。 longdouble也是如此。

JLS 5.1.2開始

intfloat或從longfloat或從longdouble原始轉換范圍擴大,可能會導致精度損失 -也就是說,結果可能會丟失該值的某些最低有效位。 在這種情況下,使用IEEE 754舍入到最近模式(第4.2.4節),結果浮點值將是整數值的正確舍入版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM