2014-12-25 90 views
6

是否有ceil對應Math.floorDiv()ceil conterpart for Java中的Math.floorDiv?

如何用我們所擁有的最快方式計算它?

UPDATE

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

回答

6

有沒有在Math類,但你可以很容易地計算出它

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

例如,ceilDiv(1,2) = -floorDiv(-1,2) = -(-1) = 1(正確答案)。

+0

這是一個在'Java8' –

+0

不,我的意思是沒有ceilDiv ... –

+0

反正我喜歡你的答案最。 –

0

您可以使用floorDiv功能和小提琴與中:

int ceilDiv(int x, int y) { 
    return Math.floorDiv(x, y) + (x % y == 0 ? 0 : 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; 
}