确保数字是另一个数字的因子

时间:2010-03-02 07:02:50

标签: java

我需要确保传递给我的一个类的值适合单元格为4px

的网格

所以如果16过去了

16%4==0 //this is fine

然而

17%4==1 //not ok

我需要程序将值转换为适合网格,所以在最后一种情况下,17将转换为16(向下舍入),如果它是19,它将转换为20(向上舍入)等。< / p>

那么有一个库会为我做这个吗?

3 个答案:

答案 0 :(得分:1)

这对你有用吗?

val = val - (val % 4)

现在有了舍入

val = Round(val / 4) * 4

答案 1 :(得分:1)

我认为这可以做你想要的,包括整理部分。

int gridVal = (((int) val + 2) / 4) * 4

编辑完整性:

如果您希望将18舍入,请使用此语句。

int gridVal = (((int) val + 1) / 4) * 4

如果你想处理负值,那么你需要一个条件。

int gridVal = ((val >= 0 ? (int) val + 2 : (int) val - 2) / 4) * 4

编辑变量(偶数)网格大小:

int halfGrid = gridSize / 2;
int gridVal = ((val >= 0 ? (int) val + halfGrid : (int) val - halfGrid) / gridSize) * gridSize;

答案 2 :(得分:1)

尝试类似

的内容

除以数字,然后舍入并乘以数字。

这样的东西
val = Round(val / 4) * 4