Math.ceil
/ Math.floor
округляет числа с плавающей запятой до ближайшего целого числа. Они просто не могут делать то, что вы хотите, то есть найти ближайший кратный для целого числа.
Существуют различные подходы для решения этой проблемы. Это домашнее задание, я полагаю? Суть не в том, чтобы найти вызов библиотеки, чтобы сделать это как однострочный (это помогает, я уверен, что такого вызова библиотеки не существует из коробки), смысл в том, чтобы написать некоторый базовый код для этого.
Вот один из способов:
Вы можете получить последнюю цифру с помощью x % 10
(то есть x по модулю 10. Обратите внимание, что -15 % 10
- это -5
, а не 5
), а затем использовать конструкцию switch
или несколько if
/ else if
операторы для правильных действий на основе последней цифры.
или более хитрым способом:
Когда вы делите на 2 целых числа в java, результат всегда округляется до целого числа, просто обрезая биты после запятой (поэтому для положительных чисел он округляется в меньшую сторону). Один из способов получить число, последняя цифра которого всегда равна 0 или 5, - это разделить на 5 и снова умножить на 5. Но вам нужно выработать стратегию, чтобы, скажем, 13
стало 15
, а не 10
, так что вам придется что-то добавить, прежде чем вы начнете делить и умножать на 5. Я оставлю это как упражнение для вас, чтобы понять, как это сделать и что добавить.