Java中的Math.floorDiv的ceil conterpart?

时间:2014-12-25 01:42:00

标签: java math java-8

Math.floorDiv()

是否有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,但似乎有太多不必要的操作。

3 个答案:

答案 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)
}