2013-07-09 156 views
7

誰能告訴我我在這裏做錯了什麼。我能夠長時間地對y進行類型化,但是對於x/y也是一樣。Java Float to Long Typecast

class Test { 

long convert(int x, float y) { 
    //return (long) x/y; // cannot convert from float to long 
    return (long)y; 
    } 

} 
+0

這是http://stackoverflow.com/questions/1655120/strange-java-cast-exception-why-cant-i-cast-的副本長到一個浮 – chancea

回答

17

這裏唯一的問題是如何用括號括起來。如果你寫

return (long) (x/y); 

當你寫(long) x/y,這被視爲((long) x)/y,這是一個float根據爪哇類型規則你會被罰款。

1

這裏

return (long) x/y; 

您鑄造xlong但整個表達式仍然float因爲y,因此,當你試圖返回,它顯示錯誤。它是同return ((long)x/y);

更好:

return (long) (x/y);