2013-07-09 5 views
7

Может ли кто-нибудь сказать мне, что я делаю неправильно здесь. Я могу привести y к y в long, но то же самое не работает для 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 в соответствии с правилами типирование Java.

1

Здесь

return (long) x/y; 

Вы бросаете x как long, но все выражение еще float из y и, следовательно, при попытке вернуть его, он показывает ошибку. Это так же, как return ((long)x/y);

Лучше:

return (long) (x/y); 
Смежные вопросы