Как получить самый близкий кратный 9 в Java - PullRequest
0 голосов
/ 12 октября 2019

Мне нужно что-то, что может вычислить ближайшее наибольшее значение, кратное 9. Так, например, если я введу 1 в эту функцию, она вернет 9, если я введу 10 в эту функцию, она вернет 18 и т. Д.

Я пробовал это 9*(Math.round(number/9)) и 9*(Math.ceil(Math.abs(number/9))), но они возвращают ближайший коэффициент, кратный 9, поэтому, если вы введете 10 в эту функцию, она вернет 9, для моих целей понадобится вернуть 18. (Возможно, естьлучший способ сказать это иначе, чем «ближайший к высшему»)

Если кто-нибудь может мне помочь, это будет здорово!

Ответы [ 3 ]

2 голосов
/ 12 октября 2019

Вы можете использовать эту формулу.

number + (9 - (number % 9))

И для исключительного случая, когда число кратно 9, используйте условие:

int result = number % 9 == 0 ? number : number + (9 - (number % 9));
0 голосов
/ 12 октября 2019

Просто добавьте один (максимум) 9 раз и проверьте, кратно ли это 9, например:

int x = 9;
int result = 0;

for (int i = x; i < 9; i++)
{
    if (i % 9 == 0)
    {
        result = i;
        break;
    }
}

// result will contains the 'nearest' 'highest' or it self multiple of 9 
0 голосов
/ 12 октября 2019

Вы можете попытаться определить множитель, значение которого зависит от того, является ли число кратным 9 или нет. Проверьте ниже код:

int number = 10;
Double ceilValue = Math.ceil(number/9);
double multiplier = 0.0;
if (number % 9 == 0) {
    multiplier = ceilValue;
} else {
    multiplier = ceilValue + 1;
}
Double result = 9 * multiplier;

System.out.println(result);

Выход: 18.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...