web-dev-qa-db-ja.com

javaの浮動小数点数を次の整数値に丸めます

javaで浮動小数点数を次の整数値に切り上げるにはどうすればよいですか?仮に

2.1-> 3

3.001-> 4

4.5-> 5

7.9-> 8

45
S.K

Javaの数学パッケージでの切り上げの上限を見てください:Math.ceil


編集:Math.ceilのjavadocを追加しました。 Mathのすべてのメソッドを読む価値があるかもしれません。

http://docs.Oracle.com/javase/7/docs/api/Java/lang/Math.html#ceil%28double%29

public static double ceil(double a)

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

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

Math.ceil(x)の値は-Math.floor(-x)の値とまったく同じであることに注意してください。

38
Steven

これを試して

float a = 4.5f;

int d = (int) Math.ceil(a);

System.out.println(d);
19
Jatin

私はまだ小さなint値を取得しているのと同じ問題を抱えていました。 Math.ceilではなく、部門でした。 (float)キャストをintに追加する必要があります。これは私がそれを修正した方法です:

int totalNumberOfCachedData = 201;
int DataCountMax = 200;

float ceil =(float) totalNumberOfCachedData / (float)DataCountMax;
int roundInt = (int) Math.ceil(ceil);

これにより、roundIntの値が2になります。

10
JeffMeJones

見る

float a=10.34f,b=45.678f;

System.out.println((int)Math.ceil(a));
System.out.println((int)Math.ceil(b));

出力

11
46
7
Lion

それが誰かを助けるなら、これが私がこれを機能させる方法です:

int arraySize = 3;
int pageSize = 10;
int pagesQty = (int) Math.ceil(arraySize / (float) pageSize);

System.out.println(pagesQty);

//Displays 1

除数は、正しく機能するためにフロートである必要があります。

2
Ph0b0x

私はこれを使用しています:

public static int roundDoubleToUpperInt(double d){
    return (d%1==0.0f)?(int)d:(int)(d+1);
}
2
negstek