У меня есть произвольное числовое значение (с плавающей запятой) и произвольный шаг (также с плавающей запятой).
Я хочу найти число на шаге, которое будет ближайшим к числовому значению, не переходядлинный путь (шагая, пока я не достигну его)
Пример: шаг 5 Значение 1038
шаг будет идти 0 - 5 - 10 - 15 - ... - 1035 -1040 - ...
Поэтому самое близкое значение - 1040. Это очень легко найти с помощью цикла, который просто ищет последнее значение перед моим числом, первое значение после и выбирает более близкое.
Но это O (n), и я хочу что-то быстрее (иногда шаг очень маленький и значение очень большое, и это должно быть сделано очень быстро для реакций пользовательского интерфейса).
IsЕсть ли способ сделать это с помощью только вычисления, без цикла?
РЕДАКТИРОВАТЬ: нет необходимости начинать с 0. Шаг может быть отрицательным или положительным (но шаг -40 даст точныйтакой же результат, как шаг 40).Если это делается с помощью умного вычисления вместо цикла, начальная точка не требуется.
Английский не является моим родным языком.Я хорошо знаю, что слово «шаг», вероятно, неправильное слово, но я не могу найти правильное объяснение.Надеюсь, мой пример прояснит мой вопрос.
Редактирование приветствуется, если кто-нибудь знает, как объяснить его более четко (включая изменение названия)