Подтвердить что ты не робот

Округлить число с плавающей запятой до следующего целочисленного значения в java

как я могу округлить число с плавающей запятой до следующего целочисленного значения в Java? Предположим, что

2.1 → 3

3.001 → 4

4.5 → 5

7.9 → 8

4b9b3361

Ответ 1

Вы должны посмотреть на потолочное округление в математических пакетах Java: Math.ceil


EDIT: Добавлен javadoc для Math.ceil. Возможно, стоит прочитать весь метод в математике.

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

public static double ceil(double a)

Возвращает наименьшее (ближайшее к отрицательной бесконечности) двойное значение, которое больше или равно аргументу и равна математическое целое. Особые случаи:

  • Если значение аргумента уже равно математическому целому числу, тогда результат будет таким же, как и аргумент.
  • Если аргумент NaN или бесконечность или положительный нуль или отрицательный ноль, то результат будет таким же, как и аргумент.
  • Если значение аргумента меньше нуля, но больше -1.0, тогда результат отрицательный.

Обратите внимание, что значение Math.ceil(x) - это точно значение -Math.floor(-x).

Ответ 2

попробуйте это

float a = 4.5f;

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

System.out.println(d);

Ответ 3

У меня была такая же проблема, когда я все еще получал меньшую ценность int. Это было разделение, а не математика. Вы должны добавить (float) бросок в int. Вот как я его исправил:

int totalNumberOfCachedData = 201;
int DataCountMax = 200;

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

Это даст мне 2 для значения roundInt.

Ответ 4

См

float a=10.34f,b=45.678f;

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

Выход

11
46

Ответ 5

Я использую это:

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