Разделение на Java для получения следующего верхнего значения

69
7

Я разделяю два ints x/y. Скажем 3/2. Тогда можно получить результат 1, хотя фактический результат равен 1,5. Хорошо, это очевидно, поскольку это подразделение. Но я хочу, чтобы 1.5 округлялся до следующего самого высокого значения, а не самого низкого. Поэтому в качестве результата желательно 2. (Можно написать простую логику, используя mod, а затем деление... Но я ищу простой Java-интерфейс). Есть предположения?

спросил(а) 2018-01-18T06:26:00+03:00 2 года, 8 месяцев назад
1
Решение
80

Вы можете использовать функцию потолка (потолка): https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#ceil(double)

Это будет, по существу, округлять до ближайшего целого числа.

ответил(а) 2018-01-18T06:31:00+03:00 2 года, 8 месяцев назад
70

Вы можете, вообще говоря, написать (x + y - 1)/y чтобы получить округленную версию x/y. Если это 3/2, то это становится (3 + 2 - 1)/2 = 4/2 = 2.

ответил(а) 2018-01-18T06:52:00+03:00 2 года, 8 месяцев назад
57

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));
}
}

ответил(а) 2018-01-18T07:02:00+03:00 2 года, 8 месяцев назад
40

Если вы можете изменить тип данных, чтобы удвоить, следующее - лучшее решение -

double x = 3;
double y = 2;
Math.ceil(Math.abs(x/y));

Это даст вам 2.0

ответил(а) 2018-01-18T06:36:00+03:00 2 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема