Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数学地板是做什么的_Java - Fatal编程技术网

Java 数学地板是做什么的

Java 数学地板是做什么的,java,Java,我试图弄清楚这句话的意思以及变量larg包含的内容: int larg; larg = ((larg % 8 != 0) ? (int) (Math.floor(larg / 8.0) + 1) * 8 : larg); 角色 (larg % 8 != 0) 询问larg是否在没有余数的情况下不除以8。如果是的话 (int) (Math.floor(larg / 8.0) + 1) * 8 将larg除以8,舍入舍弃余数并加上1,然后再乘以8。这意味着找到比larg大8的下一个倍数 这是

我试图弄清楚这句话的意思以及变量larg包含的内容:

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

(larg % 8 != 0)
询问larg是否在没有余数的情况下不除以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语句。经验丰富的程序员会知道可读性比保持一行更重要,因此像您这样的未来读者会理解它,而不必在这里提问。

这四舍五入到最接近的8。除非larg是浮点类型,否则Math.floor是假的。注意到了吗?and:一起构成三元运算符,它是伪装的if语句。请参阅了解详细信息。由于其目的是将其四舍五入到下一个8的倍数,因此更直观的书写方式是larg=Math.ceillarg/8.0*8;在上一个例子中,您应该提到larg也必须是整数才能起作用。虽然我现在注意到OP已经更新了这个问题以包含int声明。@DawoodibnKareem使用double进行整数运算很少是最有效的。