2013-07-09 97 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);