Java - 如何检查除法是整数还是浮点数?

use*_*106 8 java math int operation division

想不出更好的头衔.那么问题是:我有"int i",它可以是任何值.我的目标是将"int i"转换为可被16整除的最接近的数字.

例如,我得到了i = 33.然后我将转向32(16x2).但是如果我得到i = 50,那么它将变为48(16x3).

我试过很多东西,例如:

for (int x = i; x < 999; x++){
if ( (i - x)/16 *is an integer*){
i = i - x;
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何检查它是否是一个整数.所以也许我以前的代码工作,但我只需要找到一种方法来检查它是一个整数还是一个浮点数.所以..任何帮助表示赞赏.

Wil*_*ung 13

使用mod运算符.Mod为您提供除法运算的剩余部分.

public boolean isEvenlyDivisable(int a, int b) {
    return a % b == 0;
}
Run Code Online (Sandbox Code Playgroud)


Nan*_*ale 5

(i - x)/16是整数,当的余数(i - x)/16为0时。使用%(modulus)运算符,如:

if((i - x)%16 == 0) {
   // (i-x)/16 is integer
}
Run Code Online (Sandbox Code Playgroud)


Pau*_*aul 5

由于所有可被16整除的整数将其最后4位都设置为0.您可以在没有循环甚至if语句的情况下完成所需的操作:

i &= 0xfffffff0; // Sets i to the greatest multiple of 16 less than i, or 0 for i < 16
Run Code Online (Sandbox Code Playgroud)

例如:

int i = 50;
i &= 0xfffffff0; // i == 48

i = 39;
i &= 0xfffffff0; // i == 32

i = 16;
i &= 0xfffffff0; // i == 16
Run Code Online (Sandbox Code Playgroud)