Я пытаюсь создать функцию int smallestDivisibleAfter(int number, int divisor)
так, чтобы она возвращала наименьшее число, большее или равное number
, которое делится на divisor
(что отличает ноль). Здесь все входы и выходы считаются неотрицательными.Как округлить число до нескольких цифр?
Примеры:
smallestDivisibleAfter(9,4); // Returns 12
smallestDivisibleAfter(16,2); // Returns 16
я придумал с кодом number + divisor - number % divisor
. Однако это перестает работать, когда number % divisor == 0
, с тех пор smallestDivisibleAfter(16,2); // Returns 18
вместо 16
.
Кроме того, number - 1 + divisor - (number - 1)% divisor
не работает, поскольку int
будет заменен на unsigned long long
, когда я введу этот код в действие.
Какое здесь самое лучшее решение?
'divisor * ((число/делитель) + (число% divisor? 1: 0))'? – m69
'(number + divisor - 1)/divisor * divisor'? – AlexD
Ваш вопрос не соответствует вашему примеру - 18 - это «наименьшее число, большее 16, которое делится на 2», а 16 - нет. –