ceil
个对应物
如何用最快的方式计算它?
更新
floorDiv()
的代码如下:
public static long floorDiv(long x, long y) {
long r = x / y;
// if the signs are different and modulo not zero, round down
if ((x ^ y) < 0 && (r * y != x)) {
r--;
}
return r;
}
我们可以用类似的方式编码ceil
吗?
更新2
我看到了这个答案https://stackoverflow.com/a/7446742/258483,但似乎有太多不必要的操作。
答案 0 :(得分:9)
Math
类中没有,但您可以轻松计算
long ceilDiv(long x, long y){
return -Math.floorDiv(-x,y);
}
例如,ceilDiv(1,2)
= -floorDiv(-1,2)
= -(-1)
= 1(正确答案)。
答案 1 :(得分:2)
我也只是使用了floorMod的否定,但是如果你要定义自己的函数,你可以简单地调整上面的代码:
public static int ceilDiv(int x, int y) {
int r = x / y;
// if the signs are the same and modulo not zero, round up
if ((x ^ y) >= 0 && (r * y != x)) r++;
return r;
}
答案 2 :(得分:0)
您可以使用floorDiv
功能并使用它:
int ceilDiv(int x, int y) {
return Math.floorDiv(x, y) + (x % y == 0 ? 0 : 1)
}