Math.floor的指令是做什么的

时间:2018-04-01 09:29:50

标签: java

我试图找出这个陈述的含义以及变量larg包含的内容:

int larg;
larg = ((larg % 8 != 0) ? (int) (Math.floor(larg / 8.0) + 1) * 8 : larg);

1 个答案:

答案 0 :(得分:1)

部分

(larg % 8 != 0)

询问是否在没有剩余8分的情况下没有分数。如果是这样的话

(int) (Math.floor(larg / 8.0) + 1) * 8 
执行

将larg除以8,向下舍入以丢弃余数并加1,然后再乘以8.这意味着找到大于larg的下一个8的乘数。

这是一个三元运算符...? ... : ...,它是一个if语句。所以

larg =((larg % 8 != 0) ? (int) (Math.floor(larg / 8.0) + 1) * 8 : larg);

表示:“如果larg不是8的倍数,则向上舍入到8的下一个倍数,否则将其设置为自身”。放置它的另一种方法(由整数除以整数)

if (larg % 8 != 0) {
    larg = ((larg / 8) + 1) * 8;
}

这段代码很可能是由一位经验丰富的程序员编写的,他更喜欢单行代码而不是三行if语句。一个更有经验的程序员会知道可读性比将它保持在一行更重要,所以像你这样的未来读者会理解它而不必在这里问。