Разделение на Java для получения следующего верхнего значения
Я разделяю два ints x/y. Скажем 3/2. Тогда можно получить результат 1, хотя фактический результат равен 1,5. Хорошо, это очевидно, поскольку это подразделение. Но я хочу, чтобы 1.5 округлялся до следующего самого высокого значения, а не самого низкого. Поэтому в качестве результата желательно 2. (Можно написать простую логику, используя mod, а затем деление... Но я ищу простой Java-интерфейс). Есть предположения?
Вы можете использовать функцию потолка (потолка): https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#ceil(double)
Это будет, по существу, округлять до ближайшего целого числа.
Вы можете, вообще говоря, написать (x + y - 1)/y
чтобы получить округленную версию x/y
. Если это 3/2
, то это становится (3 + 2 - 1)/2 = 4/2 = 2
.
import java.lang.Math;
//round Up Math.ceil(double num)
//round Down Math.floor(double num)
public class RoundOff
{
public static void main(String args[])
{ //since ceil() method takes double datatype value as an argument
//either declare at least one of this variable as double
int x=3;
int y=2; //double y =2;
//or at least cast one of this variable as a (double) before taking division
System.out.print(Math.ceil((double)x/y)); //prints 2.0
//System.out.print(Math.ceil(x/y));
}
}
Если вы можете изменить тип данных, чтобы удвоить, следующее - лучшее решение -
double x = 3;
double y = 2;
Math.ceil(Math.abs(x/y));
Это даст вам 2.0
- Вопросы
- Integer-division
- Разделение на Java для получения следующего верхнего значения