2013-07-09 18 views
7

誰も私がここで間違っていることを教えてもらえますか?私はyを長い型にキャストできますが、同じことはx/yでは機能しません。Javaの浮動小数点型の型変換

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

括弧でくくられた唯一の問題です。あなたは、Javaの型付け規則に従ってfloatある((long) x)/yとして扱われたこと、(long) x/yを書いたとき、あなたは

return (long) (x/y); 

を書いた場合は、罰金になるだろう。ここで

1

return (long) x/y; 

あなたはlongとしてxをキャストしているが、式全体がまだあるためyfloat、あなたはそれを返すようにしようとすると、したがって、それはエラーを示しています。これは、より良いreturn ((long)x/y);

と同じです:

return (long) (x/y); 
関連する問題