ceil conterpart for Math.floorDiv in Java?

我与影子孤独终老i 提交于 2020-05-12 12:22:09

问题


Is there any ceil counterpart for Math.floorDiv()

How to calculate it fastest way with what we have?

UPDATE

The code for floorDiv() is follows:

 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;
    }

Can we code ceil the similar way?

UPDATE 2

I saw this answer https://stackoverflow.com/a/7446742/258483 but it seems to have too many unnecessary operations.


回答1:


There is none in the Math class, but you can easily calculate it

long ceilDiv(long x, long y){
    return -Math.floorDiv(-x,y);
}

For example, ceilDiv(1,2) = -floorDiv(-1,2) =-(-1)= 1 (correct answer).




回答2:


I'd also just use the negation of floorMod, but if you are going to define your own function, you could simply adapt the above code:

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;
}



回答3:


You can make use of the floorDiv function and fiddle with that:

int ceilDiv(int x, int y) {
    return Math.floorDiv(x, y) + (x % y == 0 ? 0 : 1)
}


来源:https://stackoverflow.com/questions/27643616/ceil-conterpart-for-math-floordiv-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!