Java - 这部分代码会发生什么?

时间:2013-12-17 20:01:16

标签: java math divide

我目前正在观看一些教程,而且我被困在一个看起来像这样的部分:

int x = (int) a_float / an_int;

如果a_float / an_int会发生什么?不是整数?这个数字是圆形/地板/奇怪的东西吗?

1 个答案:

答案 0 :(得分:2)

在Java中,强制转换优先于除法:http://introcs.cs.princeton.edu/java/11precedence/。这意味着该声明可以按如下方式细分:

  1. 截断a_float(基本上发言并以int存储)
  2. an_int
  3. 进行整数除法
  4. 将生成的int值分配给x
  5. 如果您希望在操作之前将an_int提升为float,则执行除法,省略强制转换。结果将是float(您可以在分配之前截断为int):

    int x = (float)(a_float / an_int);
    

    相同
    int x = (float)(a_float / (float)an_int);
    

    您还可以阅读此网站,以获得对其含义的完整解释:http://www.mathcs.emory.edu/~cheung/Courses/170/Syllabus/04/mixed.html