как я могу округлить число с плавающей запятой до следующего целочисленного значения в Java? Предположим, что
2.1 → 3
3.001 → 4
4.5 → 5
7.9 → 8
как я могу округлить число с плавающей запятой до следующего целочисленного значения в Java? Предположим, что
2.1 → 3
3.001 → 4
4.5 → 5
7.9 → 8
Вы должны посмотреть на потолочное округление в математических пакетах 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)
.
попробуйте это
float a = 4.5f;
int d = (int) Math.ceil(a);
System.out.println(d);
У меня была такая же проблема, когда я все еще получал меньшую ценность int. Это было разделение, а не математика. Вы должны добавить (float) бросок в int. Вот как я его исправил:
int totalNumberOfCachedData = 201;
int DataCountMax = 200;
float ceil =(float) totalNumberOfCachedData / (float)DataCountMax;
int roundInt = (int) Math.ceil(ceil);
Это даст мне 2 для значения roundInt.
См
float a=10.34f,b=45.678f;
System.out.println((int)Math.ceil(a));
System.out.println((int)Math.ceil(b));
Выход
11
46
Я использую это:
public static int roundDoubleToUpperInt(double d){
return (d%1==0.0f)?(int)d:(int)(d+1);
}