33

どうすれば常に adoubleを に切り上げint、決して切り捨てないことができるでしょうか。私は知ってMath.round(double)いますが、常に切り上げたいです。だった場合は3.2、4 に丸められます。

4

7 に答える 7

44

メソッドを使用できますMath.ceil()

JavaDoc リンクを参照してください: https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#ceil(double)

ドキュメントから:

天井

public static double ceil(double a)

引数以上で、数学的な整数に等しい最小の (負の無限大に最も近い) double 値を返します。特殊なケース:

  • 引数の値が既に数学上の整数に等しい場合、結果は引数と同じになります。
  • 引数が NaN または無限大または正のゼロまたは負のゼロの場合、結果は引数と同じになります。
  • 引数値がゼロ未満で -1.0 より大きい場合、結果は負のゼロになります。

Math.ceil(x) の値は正確に -Math.floor(-x) の値であることに注意してください。

パラメーター:

  • a - 値。

戻り値:

引数以上で、数学上の整数に等しい最小 (負の無限大に最も近い) 浮動小数点値。

于 2013-10-27T04:46:51.930 に答える
0

私の方法は比較的単純です。うまくいくことを願っています。

私の場合、3 つのアイテムしか保持できないオブジェクトの行があり、アイテムを収容するために必要な行数を調整する必要があります。

したがって、Double numberOfRows がいくつかあるので、numberOfRows.intValue() を使用して numberOfRows の int 値を取得します。

取得した int 値が numberOfRows より小さい場合は、numberOfRows に 1 を追加して切り上げます。それ以外の場合は、numberOfRows.intValue() から取得した値が必要な答えです。

テストするために、この単純な for ループを書きました。

    for(int numberOfItems = 0; numberOfItems < 16; numberOfItems++) {
        Double numberOfRows = numberOfItems / 3.0;

        System.out.println("Number of rows are: " + numberOfRows);
        System.out.println("Number of items are: " + numberOfItems);
        if(numberOfRows.intValue() < numberOfRows) {
            System.out.println("int number of rows are: " + (numberOfRows.intValue() + 1));
        }
        else {
            System.out.println("int value of rows are: " + numberOfRows.intValue());
        }
        System.out.println();
        System.out.println();
    }
于 2015-07-23T18:39:28.790 に答える
0
private int roundUP(double d){
    double dAbs = Math.abs(d);
    int i = (int) dAbs;
    double result = dAbs - (double) i;
    if(result==0.0){ 
        return (int) d;
    }else{
        return (int) d<0 ? -(i+1) : i+1;          
    }
}

よくできた !;)

于 2014-06-28T14:51:50.107 に答える