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)
(i - x)/16是整数,当的余数(i - x)/16为0时。使用%(modulus)运算符,如:
if((i - x)%16 == 0) {
// (i-x)/16 is integer
}
Run Code Online (Sandbox Code Playgroud)
由于所有可被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)
| 归档时间: |
|
| 查看次数: |
10387 次 |
| 最近记录: |