誰も私がここで間違っていることを教えてもらえますか?私は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;
}
}
誰も私がここで間違っていることを教えてもらえますか?私は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;
}
}
括弧でくくられた唯一の問題です。あなたは、Javaの型付け規則に従ってfloat
ある((long) x)/y
として扱われたこと、(long) x/y
を書いたとき、あなたは
return (long) (x/y);
を書いた場合は、罰金になるだろう。ここで
return (long) x/y;
あなたはlong
としてx
をキャストしているが、式全体がまだあるためy
のfloat
、あなたはそれを返すようにしようとすると、したがって、それはエラーを示しています。これは、より良いreturn ((long)x/y);
と同じです:
return (long) (x/y);
これはhttp://stackoverflow.com/questions/1655120/strange-java-cast-exception-why-cant-i-cast-の複製でありますロングトゥーフロート – chancea